OpenSSL Wiki でOpenSSL EVPに提供されている暗号化ライブラリの例(cでプログラムされている)を見ています。
128ビットの初期化ベクトルの例は次のとおりです。
/* A 128 bit IV */
unsigned char *iv = (unsigned char *)"01234567890123456";
0-9-> 10文字
0-6-> 7文字
合計:17文字
私のシステムでは、各文字は1バイト(8ビット)です。したがって、IVは8 * 17 = 136ビットです。なぜ合計IVサイズは128ビットだと彼らは言っているのですか?これは1つずれたエラーですか、それとも何か不足していますか?
質問から回答に移動しました。
スティーブン正しかった 。これは非常に簡単に確認できました。IVを正しい長さに変更しただけで、暗号文は同じままでした。したがって、余分なバイトはアルゴリズムで使用されず、誰かが誤って数えました。
デフォルトIV:
/* A 128 bit IV */ unsigned char *iv = (unsigned char *)"01234567890123456";
出力:
Ciphertext is: 0000 - e0 6f 63 a7 11 e8 b7 aa-9f 94 40 10 7d 46 80 a1 .oc.......@.}F.. 0010 - 17 99 43 80 ea 31 d2 a2-99 b9 53 02 d4 39 b9 70 ..C..1....S..9.p 0020 - 2c 8e 65 a9 92 36 ec 92-07 04 91 5c f1 a9 8a 44 ,.e..6.....\...D
新しいIV:
/* A 128 bit IV */ unsigned char *iv = (unsigned char *)"0123456789012345";
もう一度makeを実行してプログラムをビルドします。
出力:
Ciphertext is: 0000 - e0 6f 63 a7 11 e8 b7 aa-9f 94 40 10 7d 46 80 a1 .oc.......@.}F.. 0010 - 17 99 43 80 ea 31 d2 a2-99 b9 53 02 d4 39 b9 70 ..C..1....S..9.p 0020 - 2c 8e 65 a9 92 36 ec 92-07 04 91 5c f1 a9 8a 44 ,.e..6.....\...D