C# の AES 復号を C++で実装しなおす その1

BYTE array[32] = salt; 
Rfc2898DeriveBytes aesDeriveBytes = new Rfc2898DeriveBytes(password, array, 1000);
aes.KeySize = 256;
aes.BlockSize = 128;
aes.Key = aesDeriveBytes.GetBytes(aesKeySize / 8);
aes.IV = aesDeriveBytes.GetBytes(aes.BlockSize / 8);

aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CFB;
CryptoStream cryptoStream = new CryptoStream(fileStream, aesManaged.CreateDecryptor(), CryptoStreamMode.Read);

元C#コード

#include <openssl>
#include <openssl>
#pragma comment (lib, "libeay32.lib")

 :
char arrays[32] = salt;
BYTE aesManaged[48] = {0};
PKCS5_PBKDF2_HMAC_SHA1 (password, strlen (password), arrays, 32, 1000, 48, aesManaged);
aes.KeySize = 256;
aes.BlockSize = 128;
memcpy(aes.IV, aesManaged+32,16);
memcpy(aes.KEY, aesManaged,32);

変換 C++コード

生成した、IVと KEY を C#に渡して復号したところうまくいったのでこれでよさそう・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です