web-dev-qa-db-ja.com

OpenSSL EVP aes_256_cbc初期化ベクトルサイズ

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つずれたエラーですか、それとも何か不足していますか?

11

質問から回答に移動しました。

スティーブン正しかった 。これは非常に簡単に確認できました。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