PBKDF2の$key_lengthとは何ですか
入力から派生すると書かれていますが、256以上のkey_lengthsを使用している人がいますが、key_lengthとして256を入力すると、出力は512文字になります。これは意図的なものですか?key_lengthとして64を安全に使用して、出力が128文字になるようにすることはできますか?
$ key_lengthは、PBKDF2から必要な出力バイト数です。(key_lengthがハッシュアルゴリズムの出力バイト数よりも大きい場合、プロセスは2回繰り返され、そのハッシュがおそらく必要以上に遅くなることに注意してください。たとえば、SHA256は32バイトの出力を提供するため、33バイトを要求すると32を要求する場合の約2倍の時間がかかります。)
あなたが言及する長さの2倍は、$ raw_output = trueを指定しない限り、コードが出力バイトを16進数(つまり、1バイトあたり2文字)に変換するためです。含まれているテストベクトルは$raw_output= falseを指定します。これは、16進数の方が操作が簡単で、オンラインで投稿できるためです。アプリケーションでのデータの保存方法に応じて、結果を16進数、base64、または生のバイナリデータとして保存するかどうかを決定できます。
パスワードベースの暗号化仕様バージョン2.0のIETF仕様では、キーの長さは「派生キーのオクテット単位の意図された長さ、最大で(2 ^ 32-1)* hLen」として定義されます。ここで、hLenは次の長さを示します。擬似ランダム関数出力のオクテット。pbkdf2の詳細については、PBKDF2でパスワードを安全に保存する方法を参照してください。