1

Blowfish 暗号を使用して一部のバイナリ データを暗号化するために、php mcrypt ライブラリを使用してコードの一部を確認しています。基本的に、モードでフグ記述子を作成し、常に「12345678」に等しいパラメータで関数をMCRYPT_MODE_CBC呼び出します。mcrypt_generic_initiv

簡素化されたコード抽出:

$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($cipher, $key, '12345678');

mcrypt-generic-init関数のドキュメントには、次のように記載されています。

IV は通常、アルゴリズム ブロック サイズのサイズを持つ必要がありますが、mcrypt_enc_get_iv_size() を呼び出してサイズを取得する必要があります。IV は ECB では無視されます。IV は、CFB、CBC、STREAM、nOFB、および OFB モードで存在する必要があります。ランダムで一意である必要があります(ただし、秘密ではありません)。暗号化/復号化には同じ IV を使用する必要があります。使用したくない場合はゼロに設定する必要がありますが、これはお勧めしません。

私の質問は次のとおりです。

このパラメーターは何に使用されますか? パラメータのそのような値を使用するivことは弱点ですか? 秘密にする必要はないと言われているので、攻撃者はどうにか入手できるのでわかりません。それが弱点ではなく、このパラメータのそのような値が完全に問題ない場合、ゼロに設定することが推奨されないのはなぜですか? 「12345678」の代わりに疑似ランダム文字列をハードコーディングした方がはるかに良いでしょうか?

4

1 に答える 1

0

これは初期化ベクトルです。

http://en.wikipedia.org/wiki/Initialization_vector

于 2011-05-02T18:37:01.393 に答える