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 に答える