可能重复:
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进行哈希处理。
答案 0 :(得分:5)
md5
是一种散列方法,而不是加密方法。这是一种可以用任何语言实现的通用算法,因此我确信存在JavaScript版本。
但是,你的逻辑是有缺陷的。为什么要在客户端散列密码?然后可以在到服务器的途中捕获散列密码,这比服务器单独散列它更糟糕。这没有提供任何保护。
在相关的说明中,md5
是一个非常不安全的哈希。使用bcrypt
。
散列与加密之间的区别在于前者创建摘要,而后者创建可以解密的加密内容。哈希摘要无法转换回原始数据,因为它会丢失(故意)。哈希用于身份验证,加密以保密。
要扩展客户端散列最多 与服务器端散列一样有效的事实,请考虑在将散列摘要与存储在中的值进行比较时进行身份验证的事实DB。
您存储的值是原始密码的md5
。要进行身份验证,您必须收到密码,使用md5
,然后将其与数据库中的摘要进行比较。这意味着最多只能调用md5
一次。如果你想在JS中调用它,那么它将不会在php中调用。这意味着,如果有人拦截了md5
,那么它就像截获原始密码一样有效,因为他们可以将md5
发布到您的服务器上,而不会进行额外的散列。
如果也在服务器端执行了md5
哈希,那就不会有任何区别,因为收到了相同的未散列值(相对于PHP操作)。事实上,它是 less 安全,因为重复相同的哈希会增加冲突的可能性。
答案 1 :(得分:1)
唯一正确的答案是:不要使用md5加密密码
如果您担心通过未加密的连接传输纯文本密码,使用加密连接。