小编HOC*_*C13的帖子

从 C++ (crypto++) 到 C# 的匹配加密

我正在尝试使用 crypto++ 和 c# 在 c++ 上匹配加密方案,但似乎无法在两者上获得相同的结果。他们都对自己工作,但不是从一个到另一个。任何帮助都会很棒!

使用 Crypto++ 的 C++ 代码:

std::string key = "01286567891233460123456789123456";
std::string iv = "0123456789123456";

std::string encrypt(const std::string& str_in)
{
    std::string str_out;

    CryptoPP::AES::Encryption aesEncryption((byte*)key.c_str(), CryptoPP::AES::MAX_KEYLENGTH);
    CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption(aesEncryption, (byte*)iv.c_str());

    StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink(str_out));
    stfEncryptor.Put(reinterpret_cast<const unsigned char*>(str_in.c_str()), str_in.length() + 1);
    stfEncryptor.MessageEnd();

    return str_out;
}
std::string decrypt(const std::string& cipher_text)
{
    std::string str_out;
    CryptoPP::AES::Decryption aesDecryption((byte*)key.c_str(), CryptoPP::AES::MAX_KEYLENGTH);
    CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption(aesDecryption, (byte*)iv.c_str());

    CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, new CryptoPP::StringSink(str_out));
    stfDecryptor.Put(reinterpret_cast<const unsigned char*>(cipher_text.c_str()), cipher_text.size());
    stfDecryptor.MessageEnd();

    return str_out;
}
Run Code Online (Sandbox Code Playgroud)

代码跑:

 std::string str = encrypt("123456789012345");
 str = decrypt(str); …
Run Code Online (Sandbox Code Playgroud)

c# c++ encryption

5
推荐指数
1
解决办法
851
查看次数

标签 统计

c# ×1

c++ ×1

encryption ×1