1

ユーザーを認証するための PHP スクリプトを作成しています。ハッシュに SHA512 を使用し、パスワードの前にソルトを使用したいと考えています。ソルトを生成するには、mcrypt_create_iv を使用したいと考えています。しかし、最初に、初期化ベクトル サイズを把握する必要があります。このために、php には mcrypt_get_iv_size があることがわかります。しかし、質問があります。

mcrypt_get_iv_size() では、暗号文字列とモード文字列に何を使用しますか? 私は SHA512 を使用しているため、sha512 ハッシュである限りソルトは少なくとも必要であることに注意してください。実験的に、「 mcrypt_get_iv_size(CRYPT_SHA512, MCRYPT_MODE_CFB) 」を試してみましたが、php が文句を言いました。

4

2 に答える 2

1

実際には、暗号化mcrypt_create_iv()に使用できるランダムなバイナリ文字列を生成するように設計されていました。やりたいことは暗号化ではなくハッシュであるため、ここでは意味がありません。mcrypt_get_iv_size()

PHP 5.3 以降、ランダムな文字列を生成するために安全に使用できますが、ハッシュ関数のアルファベットに適合しないバイナリmcrypt_create_iv()出力が得られることに注意してください。

ソルトの生成に使用する方法を示すこの例を見ることができます。mcrypt_create_iv()ただし、パスワードをハッシュするには、sha512 を使用しないでください。代わりに、遅い BCrypt などのキー派生関数を使用してください

于 2012-10-20T19:51:00.970 に答える
0

ソルトの長さは、暗号の IV サイズとは関係ありません。むしろ、salt フォーマットを考慮して、特定のハッシュ アルゴリズムに必要なランダム データのバイト数を把握する必要があります。たとえば、bcrypt には base64 風のエンコーディングで 16 バイトが必要です。

とにかく、この質問をする必要があるという事実は、自分が何をしているのかわからないことを意味し、パスワードハッシュに関しては非常に悪い兆候です. 代わりに、この目的のために既存のライブラリのいずれかを使用してください。

于 2012-10-20T19:47:34.920 に答える