在没有 header 的情况下使用 AES 加密

Encrypt with AES without header

我正在尝试使用 AES 加密 16KiB 块。

我尝试用 openssl 来做,但是大小从 16384 增加到 16416。看起来 openssl 放了一个 32B header。

有什么方法可以"remove" 32B header?如果重要的话,我的环境是Redhat 5.11。

编辑: 我只尝试了openssl的命令行工具: 加密:

openssl aes-256-cbc -in text.txt -out encrypted.txt

解密:

openssl aes-256-cbc -d -in encrypted.txt -out decrypted.txt

此外 - 我需要一个可以与 C++ 一起使用的工具。

不,它没有放一个header。它做到了 padding

AES是一种块大小为128位的块密码,要求被加密的数据长度与密码块大小相等。这个padding也用于解密后恢复原始数据流长度。

编辑:

根据@jww 的说法,openssl lib 还在流前面添加了 16 字节 header,其中包含一个神奇的 8 字节字符串 "Salted__" 和一个从密码

派生的 IV

OpenSSL 在必须从 user-supplied 密码生成密钥时插入“Salted__”header 和参数。如果您使用 -k <key_in_hex> 参数手动指定密钥,则 header 将被忽略。