public static byte[] TestEncrypt(string plainText, byte[] key, byte[] iv)
{
using Aes aes = Aes.Create();
aes.Key = key;
aes.IV = iv;
// Create a new MemoryStream object to contain the encrypted bytes.
using MemoryStream memoryStream = new MemoryStream();
// Create a CryptoStream object to perform the encryption.
using CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
// Encrypt the plaintext.
using StreamWriter streamWriter = new StreamWriter(cryptoStream);
streamWriter.Write(plainText);
cryptoStream.FlushFinalBlock();
byte[] cipherText = memoryStream.ToArray();
return cipherText;
}
public static string TestDecrypt(byte[] encryptedText, byte[] key, byte[] iv)
{
using Aes aes = Aes.Create();
aes.Key = key;
aes.IV = iv;
using MemoryStream memoryStream = new MemoryStream(encryptedText);
memoryStream.Position = 0;
using CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
using StreamReader streamReader = new StreamReader(cryptoStream);
cryptoStream.Flush();
var data = streamReader.ReadToEnd() ;
return data;
}
Estou usando os dois métodos acima para criptografar e descriptografar uma string. Percebo que o leitor de fluxo sempre retorna uma string vazia. Verifiquei várias vezes que ambos os métodos recebem os mesmos valores de chave e iv, incluindo que o texto criptografado não é modificado/violado quando passado para o método TestDecrypt.
Ainda não consegui descobrir por que uma string vazia está sendo retornada?
Por favor, teste os métodos com qualquer chave aleatória e valor de IV. Só quero saber se o texto criptografado foi descriptografado com sucesso.
Espero que o texto criptografado seja descriptografado com sucesso, retornando ao texto original. O resultado é uma string vazia, o que é incorreto.