C++ 使用无头AES加密

C++ 使用无头AES加密,c++,encryption,openssl,aes,redhat,C++,Encryption,Openssl,Aes,Redhat,我试图用AES加密一个16KiB的块 我试着用openssl来做,但是大小从16384增加到16416。看起来openssl放了一个32B的头 有没有办法“删除”32B标题?如果重要的话,我的环境是Redhat 5.11 编辑: 我只尝试了openssl的命令行工具: 加密: openssl aes-256-cbc -in text.txt -out encrypted.txt 解密: openssl aes-256-cbc -d -in encrypted.txt -out decrypte

我试图用AES加密一个16KiB的块

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

有没有办法“删除”32B标题?如果重要的话,我的环境是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++。< /P> < P>不,它没有放一个页眉。是的

AES
是一种具有128位块大小的分组密码,要求加密数据的长度与密码块大小相等。此填充还用于在解密后恢复原始数据流长度

编辑:

根据@jww的说法,openssl库还使用16字节的头在流的前面加上一个IV,该IV包含一个神奇的8字节字符串“Salted_uuu”,并从密码派生而来。不,它没有放头。是的

AES
是一种具有128位块大小的分组密码,要求加密数据的长度与密码块大小相等。此填充还用于在解密后恢复原始数据流长度

编辑:


根据@jww的说法,openssl库还使用16字节的头在流前加上一个前缀,头中包含一个神奇的8字节字符串“Salted_uu;”和一个IV,该字符串来自密码

Padding解释了16个字节,而不是32个字节;有16个字节未计算。也许他正在使用命令行工具,它正在编写一个16字节的salt/iv?或者它可能是一种身份验证模式,如CCM或GCM,而额外的字节是一个标记。@jww正是这样。它添加了一个8字节的头(“Salted_uu;”)和一个8字节的salt,用于从给定密码派生密钥;有16个字节未计算。也许他正在使用命令行工具,它正在编写一个16字节的salt/iv?或者它可能是一种身份验证模式,如CCM或GCM,而额外的字节是一个标记。@jww正是这样。它添加了一个8字节的头(“Salted_uuu;”)和一个8字节的salt,用于从给定密码派生密钥。请显示代码。嗨,还没有代码。只是一个shell命令。请看我的编辑。谢谢“我需要一个可以用C++的工具。”——你的意思是你需要一个库来用C++?好吧,OpenSSL提供了一个。此外,如果您希望密文与明文大小相同,则安全性较低,因为现在加密在语义上不安全(需要随机化,随机化必须存储在某个位置)。请显示代码。嗨,还没有代码。只是一个shell命令。请看我的编辑。谢谢“我需要一个可以用C++的工具。”——你的意思是你需要一个库来用C++?好吧,OpenSSL提供了一个。此外,如果希望密文的大小与明文相同,则安全性较低,因为现在加密在语义上不安全(需要随机化,随机化必须存储在某个地方)。