我刚刚用 pyCrypto 轻松加密了一个数据字符串,但不知道如何用 crypto++ 解密它。任何人都可以使用 crypto++ 在 C++ 中提供示例解密代码吗? 这是我的 Python 代码:
key = '0123456789abcdef'
data = "aaaaaaaaaaaaaaaa"
iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16))
encryptor = AES.new(key, AES.MODE_CBC, iv)
enc = encryptor.encrypt(data)
最佳答案
与@Jon 相同的方法,有点简化
std::string ciphertext = "..."; // what Python encryption produces
std::string decryptedtext;
byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE ];
// populate key and iv with the correct values
CryptoPP::CBC_Mode< CryptoPP::AES >::Decryption decryptor;
decryptor.SetKeyWithIV(key, sizeof(key), iv);
CryptoPP::StringSource(ciphertext, true,
new CryptoPP::StreamTransformationFilter( decryptor,
new CryptoPP::StringSink( decryptedtext )
)
);
CryptoPP::StringSource
的true
参数表示“消耗整个输入”
请注意(显然)您需要您的 C++ 解密器知道您用于加密的 IV。由于您在 Python 中生成随机 IV,因此流行的技术是将 IV 附加到加密文本。
关于c++ - 如何使用 Crypto++ 在 C++ 中解密字符串数据,其中使用 pyCrypto 在 Python 中加密的原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593793/