0

これは、この質問のフォローアップです。

PHP AES 暗号化/復号化

Ⅳが気になりました。これを見ると、復号化と暗号化のために別々にランダムな IV が作成されます。また、復号化するデータと一緒に渡されることはありません。

私が間違っていなければ、IV は公開され、暗号化されたデータと一緒に送信される可能性があります。ただし、これはランダムであり、常に再利用されるべきではありません (たとえば、一連のゼロを取るなど)。

ただし、正常に復号化するには、暗号化に使用されたのと同じ IV を使用する必要があります。

新しいランダムな IV を生成するときに、復号化関数はどのように適切に機能しますか?

そして、それは機能します、私はそれをテストしました...

4

1 に答える 1

2

その質問 ( ) で使用されているモードは、渡された IV を無視します (この質問MCRYPT_MODE_ECBで指摘されているように)。

「ECB はブロック間のチェーンを実行しないため、IV を使用する方法はありません。mcrypt はすべてのモジュールで同じ APi を使用します。ECB モジュールには次の関数が定義されているため、IV は ECB では単に無視されます。int _has_iv() { return 0; }

MSDNから:

重要:このモードは、複数のセキュリティ エクスプロイトのドアを開くため、お勧めしません。暗号化される平文にかなりの繰り返しが含まれている場合、暗号文が一度に 1 ブロックずつ解読される可能性があります。ブロック分析を使用して暗号化キーを決定することもできます。また、アクティブな敵対者は、検出されずに個々のブロックを置換および交換できます。これにより、ブロックを保存し、検出せずに他のポイントでストリームに挿入できます。

于 2013-10-21T08:04:16.683 に答える