目前得票最高的是这个问题 states:
另一个问题虽然与安全相关,但与其说不是安全问题,而且完全失败了理解散列密码和加密密码之间的区别。最常见于程序员试图提供不安全的“提醒我密码”功能的代码中。
这个区别到底是什么?我一直认为散列是加密的一种形式。海报所指的不安全功能是什么?
散列是一种单向函数(好吧,一种映射)。这是不可逆的,您应用安全哈希算法,并且无法取回原始字符串。您最多能做的就是生成所谓的“冲突”,即找到提供相同哈希值的不同字符串。加密安全哈希算法旨在防止冲突的发生。您可以使用以下方法来攻击安全哈希彩虹桌,您可以通过应用来抵消salt在存储哈希之前。
加密是一种正确的(双向)功能。它是可逆的,如果你有密钥,你可以解密损坏的字符串以获得原始字符串。
它指的不安全功能是,如果您加密密码,您的应用程序会将密钥存储在某处,并且访问您的数据库(和/或代码)的攻击者可以通过获取密钥和加密文本来获取原始密码,而对于哈希来说这是不可能的。
人们通常说,如果破解者拥有您的数据库或代码,他就不需要密码,因此区别是没有意义的。这是天真的,因为你仍然有责任保护用户的密码,主要是因为他们中的大多数人确实一遍又一遍地使用相同的密码,使他们因泄露密码而面临更大的风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)