0

所以另一个堆栈溢出用户推荐了以下代码来创建哈希:

$password = 'my password';
$salt = strtr(base64_encode(openssl_random_pseudo_bytes(18)), '+', '.');
$pwhash = crypt($password, sprintf('$2y$%02d$%s', 13, $salt));

如果我没有安装 openssl,openssl_random_pseudo_bytes 是否还有其他功能?安装它是否有意义,如果是,我该怎么做?

4

2 回答 2

2

尝试使用mcrypt_create_iv(18). 尽管它用于生成初始化向量以进行加密,但/dev/random默认情况下它用于生成随机向量。

编辑: http: //php.net/manual/en/function.mcrypt-create-iv.php

于 2012-12-08T05:08:42.410 回答
0

PHP 5.5 将拥有自己的函数password_hash()password_verify()创建 BCrypt 哈希(这就是你的函数所做的)。有一个适用于 PHP 5.3/5.4 的兼容包,可以以单个 php 文件password.php的形式下载。

这是一个做得很好的实现,它使用 mcrypt_create_iv,但回退到 openssl_random_pseudo_bytes。

mcrypt_create_iv($raw_length, MCRYPT_DEV_URANDOM);

请注意,mcrypt_create_iv 函数从 读取MCRYPT_DEV_URANDOM,这足以创建密码盐(盐应该是唯一且不可预测的)。与默认值 MCRYPT_DEV_RANDOM 相比,如果没有足够的可用熵,它不会阻塞服务器。

于 2012-12-08T13:22:52.600 回答