AES-128是否可以使用长度为15的ASCII字符作为密钥?
AES-128密钥合法性问题解答
15字节长度的密钥不符合标准AES-128的要求,属于不合法的密钥。
- AES算法的密钥长度是硬标准:AES-128要求原始二进制密钥长度为16字节,对应128比特,AES-192要求24字节、AES-256要求32字节,任何不符合对应长度的密钥都无法用于标准AES加解密运算。
- 你遇到15字节密钥的常见可能性如下:
- 密钥传输、导出过程中发生了截断,丢失了最后1字节的内容
- 你拿到的是经过编码后的密钥字符串,未完成解码就统计了长度:比如十六进制编码的AES-128密钥应为32个字符,对应解码后16字节,如果仅拿到30个字符,解码后就会得到15字节的结果;Base64编码的AES-128密钥应为24个字符(含填充位),如果存在截断也会出现解码后长度不足的情况
- 该H.264流采用的是私有自定义加密方案,而非标准AES-128,这种情况在非通用场景下偶有出现
排查建议
- 先对拿到的密钥做格式转换:如果是字符串形式的密钥,先执行
十六进制转字节或者Base64解码操作,再统计原始二进制密钥的长度 - 核对密钥的获取链路,确认是否存在读取截断、传输丢包的问题
- 确认该H.264流的加密协议说明,核实是否采用的是标准AES-128加密方案
内容的提问来源于stack exchange,提问作者A.
相关产品推荐
相关产品推荐

