Я пытаюсь расшифровать строку base64, которая была зашифрована с помощью aes256 в openssl. Мне дали сеансовый ключ и IV, которые были зашифрованы моим ключом. Я преобразовал их в шестнадцатеричный формат, чтобы использовать следующую команду openssl:
openssl enc -d -aes256 -iv iv.hex -K sessionkey.hex -in message.b64 -out message.txt
Я получаю сообщение об ошибке, говорящее, что IV не является шестнадцатеричным значением. Я начал с IV и сессионного ключа в base64, который был зашифрован моим ключом. Поэтому я сделал следующее:
// преобразовать 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 не является шестнадцатеричным. Есть идеи?