gpt4 book ai didi

使用 HMAC+nonce 存储 PHP 密码 - nonce 随机性重要吗?

转载 作者:可可西里 更新时间:2023-11-01 13:25:11 26 4
gpt4 key购买 nike

几年前,我在 stackoverflow 上询问过如何使 PHP 密码存储安全。main answer建议使用以下哈希算法:

function hash_password($password, $nonce) {
global $site_key;
return hash_hmac('sha512', $password . $nonce, $site_key);
}

答案建议使用随机 nonce。与简单的唯一随机数相比,随机数有什么优势吗?

例如,每个用户可以有自己的 ID,该 ID 不会改变。但是,我们假设用户 ID 是连续的(使用 MySQL 的自动递增功能构建),因此不是随机的。用户 ID 是一个好的随机数还是随机性很重要?

现在,每个用户都可以选择一个用户名。每个用户都有自己的用户名,用户名不会改变,两个不同的用户不能有相同的用户名。用户名仍然不是随机的,但也不是连续的。用户名作为随机数是否足够好?会比使用用户 ID 更好吗?

最佳答案

这一切都基于 NONCE 是盐的假设...

如果您所说的随机数是指盐,那么是的,这需要制作更多的彩虹表。通常 salt 超过 20 个字符就足够了,但是对于极端的安全条件,您可能需要为每个密码使用一个新的随机 salt。

在慢散列中也是不错的选择 http://www.php.net/manual/en/function.hash.php#89574 ,没有讽刺。但我喜欢ripemd。

没有看到您回复的下半部分。详细说明:随机数用于防止使用彩虹表。 ID 是否有效仅取决于 ID 的长度。随机性在技术上并不重要,只是需要更多的彩虹表。举个例子,假设您使用字符“a”作为随机数,密码长度为 2 个字符,则必须创建 a-aa、a-ab a-ac 等彩虹表。如果您每次都使用随机字符,则可能必须完成 'a' 的所有排列 + 其他随机字符的所有排列。

但一般制作彩虹表需要相当长的时间。所以如果你想出一个很长的盐,它很可能是不存在的彩虹表。

关于使用 HMAC+nonce 存储 PHP 密码 - nonce 随机性重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com