在没有 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 将被忽略。
我正在尝试使用 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__" 和一个从密码
派生的 IVOpenSSL 在必须从 user-supplied 密码生成密钥时插入“Salted__”header 和参数。如果您使用 -k <key_in_hex>
参数手动指定密钥,则 header 将被忽略。