lui*_*bal 6 php security hash hmac password-storage
几年后,我在stackoverflow上询问了如何使PHP密码存储安全.在主要答复建议使用以下哈希算法:
function hash_password($password, $nonce) {
global $site_key;
return hash_hmac('sha512', $password . $nonce, $site_key);
}
Run Code Online (Sandbox Code Playgroud)
答案建议使用随机的随机数.有一个随机的随机数比简单的独特的随机数有什么优势吗?
例如,每个用户可以拥有自己的ID,但不会改变.但是,我们假设用户ID是顺序的(使用MySQL的自动增量功能构建),因此不是随机的.用户ID是一个好的nonce还是随机性很重要?
现在,每个用户都可以选择用户名.每个用户都有自己的用户名,该用户名不会更改,两个不同的用户不能拥有相同的用户名.用户名仍然不是随机的,但它们也不是顺序的.用户名是否足够好作为nonce?它会比使用用户ID更好吗?
这一切都基于随机数是盐的假设......
如果你所说的随机数是指盐,那么是的,这需要制作更多的彩虹表。通常,一次加盐超过 20 个字符就足够了,但对于极端的安全条件,您可能需要为每个密码使用一个新的随机加盐。
在慢速哈希中也是不错的选择http://www.php.net/manual/en/function.hash.php#89574,没有讽刺。但我喜欢成熟的。
没看到你回复的下半部分。详细说明:随机数用于防止使用彩虹表。ID 是否有效仅取决于 ID 的长度。随机性在技术上并不重要,但只是需要更多的彩虹表。一个例子是,假设您使用字符“a”作为随机数,并且密码有 2 个字符长,则必须创建 a-aa、a-ab a-ac 等彩虹表。如果您每次都使用随机字符,则可能必须完成“a”的所有排列+其他随机字符的所有排列。
但一般来说制作彩虹桌需要相当长的时间。因此,如果你想出一种很长的盐,那么它很可能是彩虹表,因为它不存在。
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |