TJC*_*ARK 3 c++ eclipse openssl aes
我正在测试这个OpenSSL AES-128 CTR 模式加密。
\n\n#include <openssl/aes.h>\n#include <openssl/rand.h>\n#include <stdio.h>\n#include <string.h>\nRun Code Online (Sandbox Code Playgroud)\n\n我收到此错误(用 C++ 构建):
\n\n../src/AES_OpenSSL_CTR.cpp:128:3: error: \xe2\x80\x98AES_ctr128_encrypt\xe2\x80\x99 was not declared in this scope.\nRun Code Online (Sandbox Code Playgroud)\n\n我已经包含了openssl/aes.h。AES_ctr128_encrypt 已从 OpenSSL 1.1.1.c 中删除?为什么还不宣布?
\n\n\n\n../src/AES_OpenSSL_CTR.cpp:128:3: 错误:\xe2\x80\x98AES_ctr128_encrypt\xe2\x80\x99 未在此范围内声明
\n
OpenSSL 1.1.1 和 1.1.0 仅提供AES_encrypt. 它只是一个软件实现。它在完整的块上运行。您需要管理计数器、提供增量、加密计数器并对纯文本进行异或。
AES_encrypt您应该使用 EVP 接口,而不是使用低级别。EVP 算法在可用时使用硬件加速,并结合密码和模式(如 AES-128/CTR)。您正在寻找的功能是EVP_aes_128_ctr(). 另请参阅OpenSSL wiki 上的EVP 对称加密和解密。
如果您提供一个最小、完整且可验证的示例,那么我们可以详细说明您可以采取哪些措施来解决该问题。
\n\n如果您想使用AES_ctr128_encrypt,那么您需要回退到 OpenSSL 1.0.2。OpenSSL 1.1.1 和 1.1.0 不再提供它。
$ git checkout OpenSSL_1_0_2-stable\nBranch \'OpenSSL_1_0_2-stable\' set up to track remote branch \'OpenSSL_1_0_2-stable\' from \'origin\'.\nSwitched to a new branch \'OpenSSL_1_0_2-stable\'\n\n$ grep -IR AES_ctr128_encrypt\nutil/libeay.num:AES_ctr128_encrypt 3216 EXIST::FUNCTION:AES\ncrypto/aes/aes.h:void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,\ncrypto/aes/aes_ctr.c:void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,\nRun Code Online (Sandbox Code Playgroud)\n\n如果您返回到 OpenSSL 1.0.2,请参阅OpenSSL 上的 AES CTR 256 加密操作模式。
\n\n由于您有 C++ 程序,您可能对EVP 加密感兴趣... | OpenSSL wiki 上的C++ 程序。它使用std::unique_ptr和 asecure_string来管理 OpenSSL 资源。secure_string是一个std::basic_string带有安全分配器的 typedef。它很好地清理了 OpenSSL C 代码。
\n\n\n我正在测试这个 OpenSSL AES-128 CTR 模式加密...
\n
是的,这就是博客的问题(更不用说 2012 年的博客了)。最好遵循项目的说明。OpenSSL 项目表示要使用 EVP 接口。
\n| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |