0

Bruce Schneier のソース コードを使用して、Blowfish を使用して一部のデータを暗号化しています。8バイトキーで暗号化すると、その8バイトキーの最初の文字で復号化できることに気付いた以外は、すべてうまくいくようです(たとえば、キー「abcdefgh」で暗号化し、「a」で復号化できます)。

ここに私のコードからの抜粋があります:

フグを初期化します。

char key[] = "abcdefgh";
InitializeBlowfish(key, 1);

次に、入力を 8 バイト ブロックの 2 つのユニオンに格納します。それぞれに 4 文字と unsigned long があります。

次に、暗号化します。

Blowfish_encipher(&(xl.l), &(xr.l));

xl.l と xr.l はそれぞれ、私の 2 つの共用体 xl と xr の unsigned long です。

復号化するには:

Blowfish_decipher(&(xl.l), &(xr.l));

また、キーがランダムなものである場合は復号化されず、正しいキーまたはその最初のバイトである場合にのみ復号化されないことに注意してください。

何が起こっている?!

ご協力いただきありがとうございます。

4

1 に答える 1

4

フグで見つけたソースコードへのリンクは、関数が次のように定義されていることを示している傾向がありますInitializeBlowfish

int InitializeBlowfish(char *key, size_t len)

また、次のように呼び出すこともできます:

InitializeBlowfish(key_string_blowfish, strlen(key_string_blowfish));

あなたの場合、キーの長さ1を示しているのではなく。

于 2011-06-20T08:40:07.973 に答える