@sarnold: Как бы я использовал интерфейс EVP_ * для шифрования AES? На странице, на которую вы ссылаетесь, я вижу много шифров, но не AES.

ел бы использовать библиотеку OpenSSL для расшифровки некоторых данных AES. Код имеет доступ к ключу. Этот проект уже использует libopenssl для чего-то другого, поэтому я бы хотел придерживаться этой библиотеки.

Я пошел смотреть прямо в/usr/include/openssl/aes.h так как сайт OpenSSL легок в документации. Единственная функция дешифрования - эта:

void AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);

К сожалению, это не способ указать длинуin указатель, так что я не уверен, как это будет работать.

Есть несколько других функций, которые, как я считаю, используют числовой параметр, чтобы различать шифрование и дешифрование. Например:

void AES_ecb_encrypt(*in, *out, *key, enc);
void AES_cbc_encrypt(*in, *out, length, *key, *ivec, enc);
void AES_cfb128_encrypt(*in, *out, length, *key, *ivec, *num, enc);
void AES_cfb1_encrypt(*in, *out, length, *key, *ivec, *num, enc);
void AES_cfb8_encrypt(*in, *out, length, *key, *ivec, *num, enc);
void AES_cfbr_encrypt_block(*in, *out, nbits, *key, *ivec, enc);
void AES_ofb128_encrypt(*in, *out, length, *key, *ivec, *num);
void AES_ctr128_encrypt(*in, *out, length, *key, ivec[], ecount_buf[], *num);
void AES_ige_encrypt(*in, *out, length, *key, *ivec, enc);
void AES_bi_ige_encrypt(*in, *out, length, *key, *key2, *ivec, enc);

Из того, что я понимаю, используя Google,enc Парм настроен наAES_ENCRYPT или жеAES_DECRYPT указать, какое действие должно иметь место.

Что подводит меня к моим 2 вопросам:

Что означают эти имена? Что такое ecb, cbc, cfb128 и т. Д., И как я могу решить, какой из них использовать?Что этоunsigned char *ivec Парм нужен для большинства из них, и где я могу получить его?

Ответы на вопрос(1)

Ваш ответ на вопрос