我正在尝试解密已在 openssl 中使用 aes256 加密的 base64 字符串。我得到了会话密钥和 IV,它们是用我的密钥加密的。我将它们转换为十六进制,以便可以使用以下 openssl 命令:
openssl enc -d -aes256 -iv iv.hex -K sessionkey.hex -in message.b64 -out message.txt
我收到错误消息说 IV 是非十六进制值。我从使用我的密钥加密的 base64 中的 IV 和会话密钥开始。所以我做了以下事情:
//将base64转换为二进制
openssl base64 -d -in iv.b64 -out iv.bin
openssl base64 -d -in sessionkey.b64 -out sessionkey.bin
//使用我的私钥解密
openssl rsautl -decrypt -inkey mykey.pem -in sessionkey.bin -out sessionkey_out.bin
openssl rsautl -decrypt -inkey mykey.pem -in iv.bin -out iv_out.bin
//使用以下C代码转换为十六进制:
包括
main()
{
int c;
while ((c=getchar())!=EOF)
printf("%02X",c);
}
//使用十六进制IV和密钥解密消息
openssl enc -d -aes256 -iv iv.hex -K sessionkey.hex -in message.b64 -out message.txt
我在最后一步得到错误,说 IV 不是十六进制的。有任何想法吗?