【发布时间】:2014-01-24 00:34:58
【问题描述】:
我有使用 4 字节 IV 加密一些数据。但是,我使用的加密算法(AES128)需要一个 16 字节(128 位)的密钥。说,我的代码如下:
#include<gcrypt.h>
void encrypt(){
int IV = 6174;
gcry_cipher_hd_t hd;
errStatus = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0);
errStatus = gcry_cipher_setkey(hd, keyBuffer, 16);
gcry_cipher_setiv(hd, &IV, 16);
gcry_cipher_encrypt(hd, output, 16, bytesToEncrypt, 16);
}
假设keyBuffer 包含一个 16 字节的密钥,bytes,output` 分别是我的输入和输出。我该如何正确地进行静脉注射?
【问题讨论】:
-
这似乎是错误的做法。一个小的 IV 将危及加密安全。而且,如果您在示例中使用恒定的 IV,它将受到很大的影响。 IV 应该是随机的,并且对于每条加密的消息都是不同的。
-
我知道。这只是一个熟悉加密库的课堂练习。