我可能在这里错了,但据我所知,没有2个哈希是一样的。 当然,当我md5这个词"密码"两次,我得到两个不同的哈希。
如果用户的密码是"密码123",则哈希将类似于" 482c811da5d5b4bc6d497ffa98491e38"
如果用户在以后登录时输入密码,则密码123的散列为: " 286755fad04869ca523320acce0dc6a4"
如果两个哈希对于完全相同的单词不同,我如何比较它们?
答案 0 :(得分:2)
使用相同算法的相同值的哈希总是相同的 - 这就是为什么可以比较哈希来验证值是否明确不同(如果哈希值相同,它仍然可能意味着值不同,但使用足够的话)像SHA256这样的长哈希可能足够安全,可以假设密码验证的值相同。)
最有可能的错误是让原始值以相同的方式表示(即非修剪空格,不同编码,......)并导致哈希值不同。
注意由于已知的弱点,MD5通常不能用于散列密码。
答案 1 :(得分:1)
请先阅读How to securely hash passwords?。
我会在my answer to Password Verification - How to securely check if entered password is correct中留下大部分细节,但最重要的是: