我想使用AES-128-ECB密码对单个16字节数据块进行解码和解码.首先,我通过openssl命令行实用程序使用ASCII 16字符串"a_key_simple_key"作为键,ASCII 16字符串"1234567890uvwxyz"作为消息.命令行实用程序将十六进制字符串"142f 7d9e ad8c 0682 30e0 f165 a52f f789"打印为加密消息,然后将其成功解码回原始消息,如下所示:
$ echo -n "1234567890uvwxyz" | openssl aes-128-ecb -K $(echo -n "a_key_simple_key" | xxd -ps) -nopad | xxd
0000000: 142f 7d9e ad8c 0682 30e0 f165 a52f f789 ./}.....0..e./..
$ echo "142f 7d9e ad8c 0682 30e0 f165 a52f f789" | xxd -r -ps | openssl aes-128-ecb -d -K $(echo -n "a_key_simple_key" | xxd -ps) -nopad
1234567890uvwxyz
Run Code Online (Sandbox Code Playgroud)
现在我写了一个简短的C++程序,它也应该这样做.它不起作用.有两个问题:
错误:06065064:数字信封例程:EVP_DecryptFinal_ex:解密错误
我怀疑这两个问题都以某种方式与填充相关联,但我不明白究竟有什么问题以及如何解决它.以下是该计划的完整输出:
$ g++ -Wall -g ssl-aes-128-ecb.c++ -lcrypto -lssl …Run Code Online (Sandbox Code Playgroud)