如何使用 OpenSSL 加密/解密 AES-256 CBC?

eye*_*ima 3 encryption decryption aes

我第一次安装了 Linux (Ubuntu) 并下载了 OpenSSL 包。也打开了命令行并尝试了一些命令,但没有一个起作用。

所以我有的是初始向量:5a04ec902686fb05a6b7a338b6e07760,也有密文:14c4e6965fc2ed2cd358754494aceffa和相应的明文:We're blown. Run

现在我想一定有一个命令,你输入初始向量和明文,结果你应该得到密文......?另一种可能:输入初始向量和密文,得到明文。

但是如何在命令行中执行此操作?我已经尝试过以下命令:

openssl aes-256-cbc -e -nosalt -a -in  input.txt -out  output.txt -k key -iv ivkey
Run Code Online (Sandbox Code Playgroud)

关于input.txt:我在我的桌面上创建了这个文件并在其中写入了纯文本。关于output.txt,我也创建了它并将其放在桌面上,它是空的。使用此命令后,没有任何反应!

有没有其他命令可以帮助我?我也试图在互联网上找到一些有用的工具,但似乎没有任何效果!:/

小智 6

准备输入文本:

echo "We're blown. Run" >input.txt
Run Code Online (Sandbox Code Playgroud)

加密:

openssl enc -aes-256-cbc -nosalt -e \
        -in input.txt -out input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'
Run Code Online (Sandbox Code Playgroud)

解密为标准输出原文:

openssl enc -aes-256-cbc -nosalt -d \
        -in input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'
Run Code Online (Sandbox Code Playgroud)

注意 1:for -Kand-iv你必须传递一个只包含十六进制数字的字符串。您可以从二进制文件中获取此字符串,如下所示:

hexdump -e '16/1 "%02x"' FILE_WITH_KEY
Run Code Online (Sandbox Code Playgroud)

注 2:这里我使用了AES-256算法来获取 256 位长度的密钥。但是-K只有8 bytes/16 hex/64 bits。在这种情况下,openssl用零填充私钥,因此在上面的示例中使用了以下密钥:'2222233333232323000000000000000000000000000000000000000000000000'. 这是一个显着的弱化,请在现实生活中使用更强大的键。同样的故事参考-iv,但它的长度取决于所选算法的模式和块长度,请参阅相关问题