2014-10-30 1 views
1

Я прочитал a link, и я могу правильно кодировать/декодировать данные по API C.Как использовать C API для декодирования файла aes-256-cbc, сгенерированного командной строки openssl?

Однако, у меня есть файл, который генерируется с помощью командной строки OpenSSL:

openssl aes-256-cbc -in plain.txt -out encrypted.txt 
> enter password from stdin 

Хочет декодировать результат с помощью C API. Код ниже:

unsigned char key[] = "password"; 
unsigned char iv[] = ""; // I don't know what is the default iv. 
EVP_CipherInit(&ctx, EVP_aes_256_cbc(), key, iv, 0); 

Выход неправильный. Кто-нибудь знает, как это исправить? Может быть, я назвал неправильную функцию? например: EVP_PBE_CipherInit? Я полностью потерял документ и исходный код openssl.

Любые советы приветствуются. Заранее спасибо.

ответ

0

В man-странице openssl указано, что ключ и iv значения генерируются из пароля, если они не указаны. Также он дает опцию -P для печати значения соли, ключа и iv. (Это ключ, который нужно передать функции, а не пароль).

Значение соли может быть получено из заголовка файла. Затем ключ и iv должны быть регенерированы с использованием того же самого.

Этот сборщик товаров page дает очень подробный ответ.

+0

Большое спасибо! Ссылка дает мне глубокое понимание о openssl. – ShenLei

Смежные вопросы