C# の AES 復号を C++で実装しなおす その3
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") : DWORD len; cipherContext = EVP_CIPHER_CTX_new(); |
どうも前回のコードだとEVP_DecryptFinal_exがパディング長を返してくれないようなので、追加コードを注入。
Comments