修改密钥后OpenSSL aes-256-cbc解密仍正常生效的问题咨询
解密成功的核心原因
- AES-256 算法要求的密钥长度固定为256位(即32字节),对应十六进制编码格式的密钥字符串长度为64位(1个十六进制字符对应4位二进制数据)。
- 你执行
openssl rand -hex 45生成的密钥本质是45字节随机数转十六进制的结果,最终得到的十六进制字符串长度为90位,远超过AES-256要求的64位长度。 - OpenSSL的
enc命令处理-K参数传入的密钥时,只会截取前N位符合当前加密算法要求长度的字符作为有效密钥,超出部分会被直接丢弃。你修改的是整个密钥字符串的最后两位,属于被丢弃的冗余区间,完全不会影响实际参与解密运算的密钥值,因此解密可以正常成功。
验证方法
你可以尝试修改密钥字符串前64位中的任意一个字符,再次执行解密命令,要么会直接报密钥/IV错误,要么解密得到的文件全是乱码,不可能正常读取。
补充注意:你使用的
-iv 9参数也不符合规范,AES-CBC模式要求IV长度为128位(16字节),对应32位十六进制字符,OpenSSL会自动在你传入的9前面补0填充到32位,这种用法存在安全风险,生产环境建议使用完整的随机IV值。
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

