c++ - 在 Crypto++ 中使用 std::string 作为 AES 加密的 key

标签 c++ encryption aes crypto++

我正在使用 Example of AES using Crypto++ .我想用这个 key 加密:

std::string key = "mykey";

为key分配内存

byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE ];
memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH );
memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE );

进行加密:

CryptoPP::AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );

如何将 std::string 类型的 key 传递给 aesEncryption 函数?

最佳答案

解决方法如下:

std::string sKey = "mykey";

if(CryptoPP::AES::DEFAULT_KEYLENGTH < sKey.size())
    sKey = sKey.substr(0, CryptoPP::AES::DEFAULT_KEYLENGTH); // chop if too long
else if(CryptoPP::AES::DEFAULT_KEYLENGTH > sKey.size())
    sKey += std::string(CryptoPP::AES::DEFAULT_KEYLENGTH - sKey.size(), '*'); // pad

memcpy(key, sKey.c_str(), CryptoPP::AES::DEFAULT_KEYLENGTH);

关于c++ - 在 Crypto++ 中使用 std::string 作为 AES 加密的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33753293/

相关文章:

c++ - 嵌入式项目小型资源存储数据库

C++ 池分配器程序仅在控制台关闭时崩溃

encryption - SHA1 与 RSA : what's the difference between them?

entity-framework - Entity Framework 加密连接字符串

java - PBEKeySpec 是否可在 Java 中重用?

c++ - C 中的 OpenSSL : after second decryption in application run, 结果的前 16 个字节是垃圾

c++ - 仅在 Eclipse 中不识别在一个位置的 ofstream 声明

c++ - 如何在同一个程序中多次启动和关闭 spdlog?

haskell - 将 base64-bytestring 与惰性 ByteString 结合使用

php - 安全错误。在 php 中使用 ccavenue 检测到非法访问