函数声明
void AES_cfb128_encrypt(
const unsigned char *in,
unsigned char *out,
size_t length,
const AES_KEY *key,
unsigned char *ivec,
int *num,
int enc)
参数解释
- in - 输入数据
- out - 输出数据
- length - 输入的数据长度
- key - 密码
- env - 加密模式
- num - 应该为0,否则会触发断言
- ivec是一个初始化向量,通常写成IV。关键字是指概率加密; 如果加密不是概率性的,那么当你在相同的密钥下重新加密一个信息时,你将得到相同的结果,窃听者将注意到这一点。这是一个简单的攻击,在某些模式下,这是更灾难性的,如CTR模式,在同一IV下加密两个消息会导致保密性的丧失。 在CFB模式下,如果你加密了两个不同的信息,那么第一个区块就会受到攻击,攻击者会得到信息的x-or。 人们应该为每条信息生成随机的IV,因为IV必须是不可预知的为CFB模式(如CBC模式)。 请注意,你需要向接收方发送IV,以便解密工作。IV不需要是秘密的,可以将其预置在加密文本中。 不要忘记,这些都是古老的操作模式,在现代密码学中,我们更喜欢像AES-GCM、AES-CCM和ChaCha20-Poly1305这样的认证加密模式。 而且,即使你不生成随机的每条信息,密钥仍然是安全的
来源: - https://www.qiniu.com/qfans/qnso-69435424 - https://blog.csdn.net/zyhse/article/details/112291862