2010-09-23 67 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); 
相关问题