私は200ビットキー(25バイト)を使用してrc4-40
をテストしていましたが、驚いたことに、結果はrc4
を使用した場合と同じでした。
<?php
$key_size = 25;
$key = '';
for ($i = 0; $i < $key_size; $i++) {
$key.= chr(mt_Rand(0, 255));
}
$a = openssl_encrypt(str_repeat('z', 50), 'rc4-40', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
$b = openssl_encrypt(str_repeat('z', 50), 'rc4', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
echo $a == $b ? 'good' : 'bad';
opensslコマンドでRC4が正しく機能しない? のような投稿に基づいて、rc4-40
は40ビットのキーのみをサポートし、rc4
は128ビットのみをサポートすることが私の理解でしたキー。しかし、ここでは、どちらも200ビットキーをサポートしているように見えます。
でも https://wiki.openssl.org/index.php/Manual:Enc(1) は、rc4-40
が40ビットに固定され、rc4
が128ビットに固定(どちらも上記のコードで反証されているようです):
rc4 128 bit RC4
rc4-64 64 bit RC4
rc4-40 40 bit RC4
rc4
、この例では、128ビットに長くなったキーを単に切り捨て、サポートされているキーよりも40ビットに長く切り捨てられたrc4-40
を単純に切り捨てたとしても、結果が異なるのは当然のことです。 、しかしそうではありません。
では、自分のテストで固定長でないことが示唆されているのに、オンラインのすべての文献が固定長であることを示唆しているのはなぜですか?
から https://en.wikipedia.org/wiki/Export_of_cryptography_from_the_United_States :
米国からの暗号技術およびデバイスの輸出は、1992年まで米国の法律によって厳しく制限されていましたが、2000年まで徐々に緩和されました。いくつかの制限はまだ残っています。
[…]
1992年、NSAとSPAの間の取り決めにより、商品管轄区域を使用して40ビットのRC2およびRC4暗号化を簡単にエクスポートできるようになりました(国務省から商務省に制御が移りました) )。
したがって、これは、ソフトウェアが非常に弱い暗号でのみexportedされることを許可された当時の残り(および注意)です。