Dobry wieczór,
Utknąłem z kodem AES'a, zerknie ktoś świeżym okiem?
public class AesEncryptor : IDisposable
{
public string Get(string key, string plainText)
{
plainText = "XPlain"; // debug
key = "E546C8DF278CD5931069B522E695D4F2"; // debug
_aes = Aes.Create();
_aes.IV = Encoding.UTF8.GetBytes("33d6f2726f744392"); // debug
_transform = _aes.CreateEncryptor(
rgbKey: Encoding.UTF8.GetBytes(key),
rgbIV: _aes.IV);
_memory = new MemoryStream();
_crypto = new CryptoStream(
stream: _memory,
transform: _transform,
mode: CryptoStreamMode.Write);
_streamWriter = new StreamWriter(stream: _crypto);
_streamWriter.Write(plainText);
var content = Merge(_aes.IV, _memory.ToArray());
return Convert.ToBase64String(content.ToArray());
}
private IEnumerable<T> Merge<T>(params T[][] arrays)
{
var merged = arrays.SelectMany(arr => arr);
foreach (var t in merged)
yield return t;
}
public void Dispose()
{
_streamWriter.Dispose();
_crypto.Dispose();
_memory.Dispose();
_transform.Dispose();
_aes.Dispose();
GC.SuppressFinalize(this);
}
~AesEncryptor()
{
Dispose();
}
private Aes _aes;
private MemoryStream _memory;
private CryptoStream _crypto;
private StreamWriter _streamWriter;
private ICryptoTransform _transform;
}
Przy debugowaniu _aes.CreateEncryptor nie zawiera żadnej informacji o key'u. A metoda zwraca tylko 16-bajtowy kod nieuwzględniający szyfrowanego tekstu.
Projekt .NET Core 2.2.6
Pozdrawiam,
AM