Possible Duplicate:
How to calculate md5 hash of a file using javascript
Can I convert password to md5 in javascript before sending to php page?
有没有任何函数或方法可以使用JavaScript作为PHP中的散列来加密字符串?我要求用户设置密码,但我不希望在 php 应用哈希之前,密码以字符串格式出现在服务器上。
最佳答案
md5
是一种散列方法,而不是加密方法。这是一种可以用任何语言实现的通用算法,因此我确信存在 JavaScript 版本。
但是,你的逻辑是有缺陷的。为什么要在客户端对密码进行哈希处理?然后,经过哈希处理的密码可能会在发送到服务器的途中被捕获,这比服务器单独对其进行哈希处理更糟糕。这不提供任何保护。
与此相关的是,md5
是一个非常不安全的哈希值。使用bcrypt
。
散列与加密之间的区别在于,前者创建摘要,而后者创建可以解密的加密内容。哈希摘要无法转换回原始数据,因为它丢失了(故意)。散列用于身份验证,加密用于保密。
<小时/>为了扩展客户端哈希至多与服务器端哈希一样有效的事实,请考虑当哈希摘要与存储在中的值进行比较时完成身份验证的事实数据库。
您存储的值是原始密码的md5
。要进行身份验证,您必须接收密码,使用 md5
,然后将其与数据库中的摘要进行比较。这意味着 md5
最多只能调用一次。如果你想在JS中调用它,那么在php中就不会调用它。这意味着,如果有人截获 md5
,其效果与截获原始密码一样有效,因为他们只需将 md5
发布到您的服务器,而无需进行额外的哈希处理。
如果您还在服务器端执行了 md5
哈希,那不会有任何区别,因为收到相同的未哈希值(相对于 PHP 操作) 。事实上,它不太安全,因为重复相同的哈希会增加冲突的可能性。
关于php - JavaScript 中的 md5 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640514/