0

通常、 で使用mt_randするランダムなソルトを作成するために使用しますcrypt()。しかし、php のサイトのマニュアル ページによると、mt_rand「暗号化の目的で使用しないでください[...]代わりに openssl_random_pseudo_bytes() を使用することを検討してください。」また、cryptphp のサイトのマニュアル ページで、誰かが

mcrypt_create_iv

それで、それらをテストするために、私はこのクリプトのラッパーを取り、次の行を変更しました

$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);

//change it to
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", openssl_random_pseudo_bytes(63, $cstrong), 50); 

$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mcrypt_create_iv(63, MCRYPT_RAND), 50); 

$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_srand(), 1);

次に、1 行を除くすべての行にコメントを付けて、コードの実行を開始し、各機能を確認しました。ページを更新したところ、検証が正常に機能しました。しかし、実行するopenssl_random_pseudo_bytesmcrypt_create_iv、同じハッシュが頻繁に表示されます。

$2y$08$$$$$$$$$$$$$$$$$$$$$$.UrC6Lo4LNk8iLmoi25KEoVzHHTK7tNC

上記のハッシュを10回見ました。

ハッシュを使用すると mt_srand、まったく変更されません。

ここにある別のより単純なラッパーで同じ関数をテストすると、上記と同じように動作します。

私はハッシュとcrypt. 私は混乱しています、私は実際に何を使うべきですか?

4

1 に答える 1

2

openssl_random_pseudo_bytes()ランダムなバイトを取得するためにphpでできることは、使用することです。substr()オフセットではなくバイトをopenssl_random_pseudo_bytes()返すので、あなたが何をしようとしているのかわかりません。

明確にするためopenssl_random_pseudo_bytes(64)に、単独で使用して 64 バイトのソルトを生成できます。

于 2013-04-18T21:31:45.973 に答える