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

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

我刚刚第一次安装 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

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

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

答案1

准备输入文本:

echo "We're blown. Run" >input.txt

加密:

openssl enc -aes-256-cbc -nosalt -e \
        -in input.txt -out input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'

解密到stdout原文:

openssl enc -aes-256-cbc -nosalt -d \
        -in input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'

注 1-K-iv必须通过仅由十六进制数字组成的字符串。你可以从二进制文件中获取此字符串,如下所示:

hexdump -e '16/1 "%02x"' FILE_WITH_KEY

笔记2:这里我用的是AES-256算法得到 256 位长度的密钥。但-K只有8 字节/16 进制/64 位。在这种情况下,openssl私钥用零填充,因此在上面的例子中使用了以下密钥:'2222233333232323000000000000000000000000000000000000000000000000'。这是一个显着的弱化,请在现实生活中使用更多强密钥。同样的故事参考-iv,但它的长度取决于所选算法的模式和块长度,查看相关问题

相关内容