gpt4 book ai didi

php - 如何生成好的盐——我的函数是否足够安全?

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:13 24 4
gpt4 key购买 nike

这是我用来生成随机盐的函数:

function generateRandomString($nbLetters){
$randString="";
$charUniverse="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for($i=0; $i<$nbLetters; $i++){
$randInt=rand(0,61);
$randChar=$charUniverse[$randInt];
$randString=$randomString.$randChar;
}
return $randomString;
}

这是一个非商业网站。它仅用于生成盐(将存储在数据库中并与用户提交的密码一起用于散列)。

这样合适吗?我应该使用更大的字符子集吗?如果是的话,在 PHP 中是否有一种简单的方法可以做到这一点?

最佳答案

如果您要对密码进行哈希处理,则应使用不需要您生成自己的盐的现代哈希算法。使用弱散列算法会给您和您的用户带来危险。我原来的回答是八年前写的。时代变了,现在密码散列变得容易多了。

您应该始终使用内置函数来散列/检查密码。在任何时候使用您自己的算法都会带来大量不必要的风险。

对于 PHP,请考虑使用 password_hash() , 使用 PASSWORD_BCRYPT 算法。无需提供您自己的盐。

以下是我的原始答案,供后人引用:


Warning: The following implementation does not produce an unpredictable salt, as per the documentation for uniqid.

来自php sha1 page :

$salt = uniqid(mt_rand(), true);

这看起来比您提议的更简单、更有效(因为每个都是独一无二的)。

关于php - 如何生成好的盐——我的函数是否足够安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354796/

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