可能的重复:
用户密码盐的最佳长度是多少? https://stackoverflow.com/questions/184112/what-is-the-optimal-length-for-user-password-salt
我有一个如下所示的数据库:
create table user (id int primary key auto increment,
username varchar(64),
password varchar(128), # sha512 hash of password
password_salt varchar(128) # sha512 hash of a random number used as salt
)
这是使用盐确保密码安全的好主意吗?盐应该放多长时间?我认为拥有 128 位(SHA-512)盐不会有什么坏处,但我以前就错了。
我有几个意见:
每个用户的盐应该是随机且唯一的,但它们不必是哈希摘要 https://stackoverflow.com/questions/4000440/should-the-salt-for-a-password-hash-be-hashed-also。盐的想法只是使每个用户的哈希摘要都是唯一的,以抵抗字典攻击和彩虹表攻击。无论盐的长度如何,盐都不会增加哈希摘要算法的强度。
DES 使用 12 位作为盐。更新后的 UNIX 密码系统使用更多,最多 128 位。
如果您想要更强的密码,请考虑使用bcrypt http://bcrypt.sourceforge.net/ or PBKDF2 http://en.wikipedia.org/wiki/PBKDF2.
FWIW,无论输入的长度如何,SHA-512 哈希摘要(编码为十六进制数字)始终恰好是 128 个字符。所以我会使用 CHAR(128) 而不是 VARCHAR(128)。使用 BINARY(2) 或 BINARY(3) 作为盐。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)