5

これはおそらくばかげた質問ですが、私には理解できません。現在、私はこの Web サイトを使用しています: http://www.fyneworks.com/encryption/rc4-encryption/概念実証のために rc4 を暗号化します。たとえば、平文として「a」、パスワードとして「a」を入力すると、暗号文として「71」が得られます (これは「q」の ASCII 表現です)。opensslを使用して、コマンドラインから同じことをしたかった:

> echo a | openssl rc4 -nosalt  -out /tmp/uuu 
enter rc4 encryption password:
Verifying - enter rc4 encryption password:

> cat /tmp/uuu | xxd
0000000: 5896                                     X.

そのため、'71' ではなく '5896' を取得していますが、これは私には理解できません。誰かが私に説明できれば、私は感謝します。

ありがとうございました !

4

2 に答える 2

5

友人のおかげで、私たちは何が悪いのかを理解しました。彼は私に鍵を印刷するように言った

echo -ne "a" |  openssl  rc4 -pass pass:a -e  -nopad    -nosalt -p
key=0CC175B9C0F1B6A831C399E269772661

最後に入力した0x61で、いくつかのパディングが追加されていることがわかります。opensslがパスからキーを生成することがわかりました。

代わりに、-Kオプションを使用してキーを直接入力すると、次のようになります。

echo -ne "a" |  openssl  rc4 -K 61 -e  -nopad    -nosalt -p
key=61000000000000000000000000000000

'0のパディングがあることがわかります。実際には、小さすぎるキーを使用することは望ましくありません(rc4の場合、キーは少なくとも40ビット長である必要があるため)。それでは、128bキーを試してみましょう。

echo -ne "foobar" |  openssl  rc4 -K "6162636465666768696A6B6C6D6E6F70" -e  -nopad    -nosalt  | xxd
0000000: caaf 2cbf d334                           ..,..4

結果はウェブページのものと同じです:)

于 2011-12-02T12:34:08.840 に答える
0

進行中の作業

ここに興味深いパターンがあります。暗号化キーとして「0」を使用すると、平文と暗号文の間に強い傾向が見られます。下記参照。

2 つの実装の違いについて私が興味を持っているのは、OpenSSL が少し階段状であるのに対し、fyne は単調に増加することです。後でもう一度見てみましょう。これはまだ回答とは考えていないため、これをコミュニティ wiki としてマークしていますが、分析が役立つかもしれないと考えました。

細かい:

0(0) = B8
0(1) = B9
0(2) = BA
0(3) = BB
0(4) = BC
0(5) = BD
0(6) = BE
0(7) = BF
0(8) = B0
0(9) = B1

OpenSSL:

0(0) = 72
0(1) = 73
0(2) = 70
0(3) = 71
0(4) = 76
0(5) = 77
0(6) = 74
0(7) = 75
0(8) = 7A
0(9) = 7B

使用するコマンド

cat -n N > /tmp/test #Where n is a number
openssl rc4 -e -nosalt -in /tmp/test -out /tmp/uuu
cat /tmp/uuu |xxd
于 2011-12-02T04:38:11.363 に答える