Encryption 是否可以使用EVP API使用AES CTR模式加密?

Encryption 是否可以使用EVP API使用AES CTR模式加密?,encryption,openssl,aes,Encryption,Openssl,Aes,我是OpenSSL新手。我知道应该使用EVP API执行加密,它充当所有密码的公共接口。AES CTR模式似乎出现在我拥有的OpenSSL版本中,但EVP_AES_128_CTR的定义在EVP.h中被禁用: #if 0 const EVP_CIPHER *EVP_aes_128_ctr(void); #endif 知道为什么吗?我可以删除#if 0吗?任何其他关于在OpenSSL中使用128位AES CTR模式加密的建议都将不胜感激 谢谢 顺便说一句,这个问题的答案似乎是否定的,还没有。但也许

我是OpenSSL新手。我知道应该使用EVP API执行加密,它充当所有密码的公共接口。AES CTR模式似乎出现在我拥有的OpenSSL版本中,但EVP_AES_128_CTR的定义在EVP.h中被禁用:

#if 0
const EVP_CIPHER *EVP_aes_128_ctr(void);
#endif
知道为什么吗?我可以删除#if 0吗?任何其他关于在OpenSSL中使用128位AES CTR模式加密的建议都将不胜感激


谢谢

顺便说一句,这个问题的答案似乎是否定的,还没有。但也许很快。我发现此电子邮件线程表明解决此问题的修补程序可能已于2010年6月提交:

但是当我从SVN下载最新的开发分支时,AES CTR仍然没有在EVP中启用。我最终直接实现了它,我发现这个链接很有帮助:


我使用的是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);