openssl未生成预期大小的消息

openssl未生成预期大小的消息,openssl,aes,ecb,Openssl,Aes,Ecb,我有一个16字节的文件,加密后,它的大小会发生奇怪的变化 > hexdump -C 1.txt 00000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 |aaaaaaaaaaaaaaa| 0000000f 它变成45字节 为什么它不是16的倍数,因为AES有16个字节块 如果openssl添加某种类型的头,它有多大,大小是否固定?我在文档中找不到任何提到这一点的东西 尽管您的hextump声明了15个字节,但您的文件实际上

我有一个16字节的文件,加密后,它的大小会发生奇怪的变化

> hexdump -C 1.txt
00000000  61 61 61 61 61 61 61 61  61 61 61 61 61 61 61     |aaaaaaaaaaaaaaa|
0000000f
它变成45字节

  • 为什么它不是16的倍数,因为AES有16个字节块
  • 如果openssl添加某种类型的头,它有多大,大小是否固定?我在文档中找不到任何提到这一点的东西

尽管您的
hextump
声明了15个字节,但您的文件实际上是16个字节。ECB要求填充到块大小的下一个倍数,因此对于AES,密文是32字节。您在base64中指定了编码,32字节的base64编码是ceil(32/3)*4=44个字符加上一个换行符等于45。PS:
enc
通常使用基于密码的salt加密,并写入包含salt的16字节头,但当您指定
-nosalt
时,则不会这样做
> openssl enc -v -aes-128-ecb -nosalt -base64 -in 1.txt -out 2.txt

...

bytes read:    16
bytes written: 45