基本 AES 解密问题

基本 AES 解密问题

我正在读这本书密码工程,目前的问题如下:

使用现有的加密库,解密以下密文(十六进制形式):

539b333b39706d149028cfe1d9d4a407

使用以下 256 位密钥(也是十六进制):

8000000000000000000000000000000000000000000000000000000000000001

使用 AES。

我有点困惑。我使用的是 OpenSSL,但使用参数-aes256要求 IV,而这个问题显然没有给出。将 IV 全部输入为零会导致解密失败。尝试使用其他 AES 加密方法并没有取得多大进展。我可能有点不知所措,但只是想学习这些东西的工作原理。我是一名视频游戏程序员,所以这对我来说都是新的。任何帮助解决这个教科书问题的方法都将不胜感激!

注意:我已经进行了详尽的 Stack Overflow 和 Google 搜索,但大约一个小时后仍未取得任何进展。

答案1

由于没有操作模式已指定,并且由于密文长度等于一个 AES 密码块的大小(128 位 = 32 个十六进制数字 = 16 字节),因此您很可能需要使用原始分组密码(又名“ECB 模式”)。

事实上,你可以使用openssl 加密。您需要的选项是-aes-256-ecb,这将选择 ECB 模式下的 AES-256 密码,以及-nopad,这将关闭消息填充.*

当然,您还需要先将密文从十六进制转换为原始字节。(您可以使用-K选项直接以十六进制提供密钥。)输出明文将不是是可打印的 ASCII,但将其转换回十六进制应该会显示出清晰的模式。

*) 事实上,你的明文恰好以有效结束PKCS#7 填充,因此即使没有 ,openssl 也会很乐意解密它-nopad。不过,我认为这只是巧合。

相关内容