Мой метод AESEncrypt(string text)
возвращает байтовый массив.Если я шифрую сообщение и использую возвращенный байтовый массив в качестве входных данных для AESDecrypt(byte[] text)
, все работает нормально.Проблема в том, что мне нужно преобразовать его в строку и наоборот, поэтому я попробовал следующее:
byte[] encrypted = enc.AESEncrypt("Testmessage");
string encryptedStr = Convert.ToBase64String(encrypted);
byte[] test = Convert.FromBase64String(encryptedStr);
Console.WriteLine((encrypted == test));
Я также пробовал это с Encoding.ASCII.GetString()
, Encoding.UTF8.GetString()
,
но encrypted == test
возвращает false
каждый раз ...
Какой метод мне нужно использовать для преобразования байта AES [] в строку и наоборот?
Это AESEncryptметод:
public byte[] AESEncrypt(string s)
{
byte[] encrypted;
using (AesManaged aes = new AesManaged()) {
ICryptoTransform encryptor = aes.CreateEncryptor(AESKey, AESIV);
using (MemoryStream ms = new MemoryStream()) {
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) {
using (StreamWriter sw = new StreamWriter(cs)) {
sw.Write(s);
}
encrypted = ms.ToArray();
}
}
}
return encrypted;
}