Con*_*nel 5 php passwords crypt blowfish
我刚开始学习PHP,我想创建一个登录我最后一年大学项目的网站.我已经读过,在这样的很多地方,河豚是最好的散列方法:openssl_digest vs hash vs hash_hmac?SALT和HMAC之间的区别?
我读到的关于crypt方法的每个地方都包含一个字符串,比如$2y$07$usesomesillystringforsalt$我的主要问题是:我如何随机生成这个?我已经读过时间戳和mt_rand()不安全的地方.
我也听说AES是最近的首选技术,但从我看来,在PHP中实现它似乎相当棘手!河豚仍然是保护存储密码的可接受方法吗?
salt应该是唯一的(对于每个密码)并且是不可预测的.这两个标准在确定性计算机上有点难以实现,因此您可以做的最好的事情是,使用操作系统的随机源来生成盐.
时间戳以及mt_rand()功能并不理想,因为有人可以说它们是可预测的.至少攻击者可以在一段时间内缩小(并因此预先计算)可能的组合.虽然这可能对实践没有太大影响,但为什么不尽力而为呢?
从PHP 5.3开始,您可以安全地使用该mcrypt_create_iv()函数从随机源中读取,然后您必须将二进制字符串编码为允许的字母表.这是一种可能的实现方式.
PHP 5.5将拥有自己的功能password_hash()并password_verify()准备就绪,以简化此任务.还有一个适用于PHP 5.3/5.4 的兼容包,可从password_compat下载.
小智 5
对于 PHP 5.3.7 或更高版本,我相信这是最好的:
$blowfish_salt = "$2y$10$".bin2hex(openssl_random_pseudo_bytes(22));
Run Code Online (Sandbox Code Playgroud)
对于 PHP 5.5 或更高版本,只需使用自动创建盐的新password_hash() 功能。
| 归档时间: |
|
| 查看次数: |
7826 次 |
| 最近记录: |