2010-09-23 71 views
7

我是OpenSSL的新手。我知道應該使用EVP API來執行加密,該API充當所有密碼的通用接口。 AES CTR模式似乎存在於OpenSSL的,我有版本,但EVP_aes_128_ctr的定義是禁用的evp.h:使用EVP API可以使用AES CTR模式加密嗎?

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

任何想法,這是爲什麼?我可以刪除#if 0嗎?任何其他指針獲得128位AES CTR模式加密工作在OpenSSL將不勝感激!

謝謝!

回答

4

順便說一句,它看起來像這樣的答案是否定的,還沒有。但可能很快。我發現這個電子郵件線索表明一個補丁來解決這個問題,可以在2010年6月已提交:

http://www.mail-archive.com/[email protected]/msg01972.html

但是,當我從SVN下載最新的開發分支,AES CTR仍然沒有EVP功能。最後我只是直接實現它,因爲我發現這個鏈接有用:

AES CTR 256 Encryption Mode of operation on OpenSSL

1

我使用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); 
相關問題