我是OpenSSL的新手。我知道应该使用EVP API执行加密,EVP API充当所有密码的通用接口。 AES 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中工作的任何其他指示将不胜感激!
谢谢!
答案 0 :(得分:4)
http://www.mail-archive.com/libssh2-devel@cool.haxx.se/msg01972.html
但是当我从SVN下载最新的开发分支时,仍然没有在EVP中启用AES CTR。我最后直接实现了它,为此我发现这个链接很有帮助:
答案 1 :(得分: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);