我试图解密使用openssl中的aes256加密的base64字符串。我被给了会话密钥和IV,这些密钥都是用我的密钥加密的。我转换他们为十六进制,这样我可以使用下面的OpenSSL命令:openssl-使用密钥和IV解密base64字符串
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是非十六进制。有任何想法吗?