AES暗号化処理をC#からC++に変換したい
C#でAES暗号化していた処理をC++でも利用するために変換を試みているのですが、Crypto++ライブラリを使っての実装ができません。
暗号化はできているようなのですが、結果が異なってしまいます。
ブロックサイズとキーサイズの指定が怪しいと考えているのですが、どこが要因かわかる方ご教授願えますでしょうか。
C# Code
const string AesIV = @"1234567890123456";
const string AesKey = @"ABCDEFGHIJKLMNOP";
string strText = "暗号化テスト";
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.BlockSize = 128;
aes.KeySize = 128;
aes.IV = Encoding.UTF8.GetBytes(AesIV);
aes.Key = Encoding.UTF8.GetBytes(AesKey);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] encryptText = aes.CreateEncryptor().TransformFinalBlock(byteText, 0, byteText.Length);
C++ Code (Crypto++利用)
std::string strKey("1234567890123456");
std::string strIV("ABCDEFGHIJKLMNOP");
std::string strText = "暗号化テスト";
std::string stEncryptText;
CryptoPP::AES::Encryption aesEncryption((CryptoPP::byte*)strKey.c_str(), CryptoPP::AES::DEFAULT_KEYLENGTH);
CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption(aesEncryption, (CryptoPP::byte*)strIV.c_str());
CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink(stEncryptText), CryptoPP::BlockPaddingSchemeDef::PKCS_PADDING);
stfEncryptor.Put(reinterpret_cast<const unsigned char*>(strText.c_str()), strText.length());
stfEncryptor.MessageEnd();