我試圖解密使用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是非十六進制。有任何想法嗎?