OpenSSL EVP aes_256_cbc 初始化向量大小

信息安全 加密 密码学 openssl C 初始化向量
2021-09-09 00:23:21

我正在查看在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 的错误还是我错过了什么?

1个回答

从问题转到答案。

斯蒂芬 是对的这很容易检查,我只是将 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  

新四:

/* 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