我试图在openssl上使用aes-128-cbc加密,我希望密钥需要32位。但是,我注意到当我输入密钥长度为18时,openssl不会给我一个错误。
echo hello | openssl enc -aes-128-cbc -A -a -nosalt -K 123456789012345678 -iv 66666666666666666666666666666666
output:zBN+65infn74QK+prfY6kw==
但如果我在密钥之后添加0,直到它的32位数字,我仍然会得到相同的结果。
echo hello | openssl enc -aes-128-cbc -A -a -nosalt -K 12345678901234567800000000000000 -iv 6666666666666666666666666666666
output:zBN+65infn74QK+prfY6kw==
是否有文档说OpenSSL为密钥添加了填充?
编辑:我需要在代码中重现此行为。我给了钥匙,但无法保证钥匙的位数。
答案 0 :(得分:1)
使用128位密钥的AES是16字节或32位十六进制数字密钥。它可能是零填充键的未指定部分,不依赖于键填充,这是未指定的行为。
最好为加密函数提供确切的大小输入,为AES 128位密钥指定32位十六进制数字。