【发布时间】:2018-01-18 03:19:02
【问题描述】:
openssl库的代码加解密函数,如下...
EVP_EncryptInit_ex( ctx, EVP_aes_256_cbc(), NULL, key, iv)
当密钥长度不等于 256 位(32 字节)时,它可以工作。 密钥长度可以是任意的。为什么?
例如,它工作正常,没有收到错误:
char key[]="012345678901234567890";
【问题讨论】:
-
请围绕您的问题添加更多上下文,以便我们更有效地回答。
-
为什么要问为什么?为什么不以正确的方式去做呢?
-
TL;DR C 语言不执行边界检查(而是使用这种可爱的指针算法),因此该函数的实现只读取从
key指针位置开始的 32 个字节...不管有什么。或者它在你做你不应该做的事情时崩溃。
标签: encryption openssl cryptography aes