RC4には可変長キーがあり、OpenSSLのencユーティリティではキーサイズを選択する必要があります。あなたがテストしている他の実装では、このような制限がないため、キーが一致しません。
enc
ユーティリティのdocumentationは、暗号の許可キーのサイズについて説明します。
rc4 128 bit RC4
rc4-64 64 bit RC4
rc4-40 40 bit RC4
のでRC4のみ128ビット(16バイト)キーで動作します。また、-k
オプションは、指定されたパスフレーズからキーを派生させることを意味します。これは内部でキー導出関数(KDF)を実装するEVP_BytesToKey関数を使用して行います。
とにかく、あなたのRC4の実装は同じキーを使用していません。あなたは-K
と短いキーを指定した場合でも、それは、ゼロパッドます短い鍵を、それが16バイトのキーを期待していますので、また、
$ echo -ne "test" | openssl rc4 -k test -nosalt -e -nopad -p
key=098F6BCD4621D373CADE4E832627B4F6
:OpenSSLは、それが使用している実際のキーをプリント持つように-p
オプションを使用します(大文字のK)オプションです。ですから、キーの長さと一致して-K
オプションで進値のキーを指定する必要があります
$ echo -ne "test" | xxd
0000000: 7465 7374 test
$ echo -ne "test" | openssl rc4 -K 74657374 -nosalt -e -nopad -p
key=74657374000000000000000000000000
、あなたがされます:あなたは、OpenSSLのキーを参照するには、再度「テスト」と-p
のアスキー進値を見つけるためにxxd
を使用することができますRC4の実装は同等です。たとえば、ここではRC-40を使用してキーの長さを5バイトに制限し、5バイトのキー "テスト"、つまり74 65 73 74 73
を使用します。
$ echo -ne "test" | openssl rc4-40 -K 7465737473 -nosalt -e -nopad | xxd
0000000: dd9b 5cb9
キーの「テスト」が指定されていると、Web実装で同じ結果が得られます。