Я создал случайный 256-битный симметричный ключ в файле для использования для шифрования некоторых данных с помощью командной строки OpenSSL, которые мне нужно расшифровывать позже программно, используя библиотеку OpenSSL. У меня нет успеха, и я думаю, что проблема может быть в векторе инициализации, который я использую (или не использую).
Я шифрую данные с помощью этой команды:
/usr/bin/openssl enc -aes-256-cbc -salt -in input_filename -out output_filename -pass file:keyfile
Я использую следующий вызов для инициализации дешифрования данных:
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, keyfile.data(), nullptr))
keyfile
- это vector<unsigned char>
, который содержит 32 байта ключа. Мой вопрос касается последнего параметра. Он должен быть вектором инициализации алгоритма шифрования. Я не указывал IV при шифровании, поэтому некоторые значения по умолчанию должны были использоваться.
Пропущено ли значение nullptr для этого параметра означает "использовать значение по умолчанию"? Является ли значение по умолчанию значением null, и ничто не добавляется к первому блоку шифрования?
Я должен упомянуть, что я могу расшифровать из командной строки без предоставления IV.