Можно ли использовать шифрование в режиме AES CTR с помощью EVP API? - PullRequest
7 голосов
/ 24 сентября 2010

Я новичок в OpenSSL.Я понимаю, что шифрование должно выполняться с использованием API EVP, который действует как общий интерфейс для всех шифров.Режим ATR CTR, кажется, присутствует в имеющейся у меня версии OpenSSL, но определение для EVP_aes_128_ctr отключено в evp.h:

#if 0
const EVP_CIPHER *EVP_aes_128_ctr(void);
#endif

Есть идеи, почему это так?Могу ли я просто удалить #if 0?Буду признателен за любые другие указания по получению 128-битного шифрования в режиме AES CTR в OpenSSL!

Спасибо!

Ответы [ 2 ]

4 голосов
/ 29 октября 2010

Кстати, похоже, ответа на этот вопрос нет, пока нет. Но возможно скоро. Я нашел эту ветку электронной почты, указывающую, что исправление для решения этой проблемы, возможно, было отправлено в июне 2010 года:

http://www.mail-archive.com/libssh2-devel@cool.haxx.se/msg01972.html

Но когда я скачал последнюю ветку разработки из SVN, AES CTR все еще не был включен в EVP. В итоге я просто реализовал это напрямую, для чего я нашел эту ссылку полезной:

AES CTR 256 Режим шифрования в OpenSSL

1 голос
/ 20 января 2016

Я использую режим AES CTR 128, и он работает. Я использую libssl1.0.0 (я не уверен, что отвечаю на правильный вопрос! Надеюсь, это будет полезно). Вот часть моего кода:

EVP_CipherInit_ex(ctx, EVP_aes_128_ctr(), NULL, key, iv,1);
EVP_CipherUpdate (ctx, ciphertext, &len, plaintext, plaintext_len);
/* Finalise the encryption. */
if(! EVP_CipherFinal_ex(ctx, ciphertext + len, &len)) handleErrors();
/*setting padding option*/
EVP_CIPHER_CTX_set_padding(ctx,0);
/* Clean up */
EVP_CIPHER_CTX_free(ctx);
...