qst*_*ter 12 php random cryptography salt
在PHP中生成加密安全32字节盐的最佳方法是什么,而不依赖于典型PHP安装中很少包含的库?
经过一些谷歌搜索后,我发现它mt_rand
不够安全,但我没有找到更换的建议.一篇文章建议阅读,/dev/random
但不仅仅是这不适用于Windows; 它也很慢.
我希望在安全性和速度之间取得合理的平衡(即,生成512字节不应该花费20秒,就像/dev/random
通常那样)
Sco*_*ski 15
这在PHP 7中更容易:只是$salt = random_bytes($numberOfDesiredBytes);
用来生成一个盐.
无论如何,你需要什么盐?如果是密码,只需使用password_hash()
和password_verify()
.
注意:
mcrypt
已在PHP 7.1中弃用.跳到最新的答案.
您可能需要查看文档(和注释)mcrypt_create_iv()
.
注意:
mcrypt
已在PHP 7.1中弃用.跳到最新的答案.
您可以使用该功能mycrypt_create_iv()
,因为PHP版本5.3它也使用Windows服务器上的随机源(不仅仅是在Unix上).在使用它之前,您应该检查是否MCRYPT_DEV_URANDOM
定义了常量.
mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
Run Code Online (Sandbox Code Playgroud)
与随机不同,如果没有足够的熵,则urandom不会阻止服务器.由于密码盐应该是唯一的(不一定是随机的),因此urandom对我来说似乎是一个不错的选择.