【发布时间】:2011-11-18 06:57:27
【问题描述】:
我有一个如下数据库:
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) 盐不会有什么坏处,但我以前错了。
【问题讨论】:
-
散列盐不会增加安全性。重要的是盐值的总数,并且它们具有均匀分布。
-
SHA-512 生成一个 512 位(64 字节)的值。如果你有一个好的随机数,你不需要散列它。为 salt 使用 512 位将提供良好的保护,但您可能会发现即使是 64 位也足够了。
-
@outis
password = sha512(raw_password + sha512(random_number_between_zero_and_a_billion())) -
@Jonathan Leffler:为了胜利而矫枉过正!
标签: security database-design password-hash