При расшифровке из AES в конце моего расшифрованного текста появляются случайные буквы и цифры.C#

Место общения программистов C#
Ответить
Anonymous
 При расшифровке из AES в конце моего расшифрованного текста появляются случайные буквы и цифры.

Сообщение Anonymous »

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда расшифрованные данные возвращаются из моего метода расшифровки, они содержат случайные числа и буквы в конце текста с исходными данными. Я использую шифрование AES и использую его впервые, поэтому, если я упускаю что-то явно очевидное или делаю что-то, что является плохой практикой, пожалуйста, укажите на это.
Мой метод шифрования это -

Код: Выделить всё

        public static byte[] Encrypt(int key, string plainText, int iv)
{
byte[] encryptedText;
Aes aesAlg = Aes.Create();
string keyString = key.ToString();
Rfc2898DeriveBytes sourceDeriveBytes = new(keyString, Encoding.UTF8.GetBytes(keyString));
byte[] keyBytes = sourceDeriveBytes.GetBytes(16);
aesAlg.Key = keyBytes;

string ivString = iv.ToString();
Rfc2898DeriveBytes zendeskDeriveBytes = new(ivString, Encoding.UTF8.GetBytes(ivString));
byte[] ivBytes = zendeskDeriveBytes.GetBytes(16);
aesAlg.IV = ivBytes;

aesAlg.Padding = PaddingMode.None;

ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
encryptedText = msEncrypt.ToArray();

}

return encryptedText;
}
Мой метод расшифровки -

Код: Выделить всё

        public static string Decrypt(int key, byte[] encryptedText, int iv)
{
string plainText;
Aes aesAlg = Aes.Create();
string keyString = key.ToString();
Rfc2898DeriveBytes pbkdf = new(keyString, Encoding.UTF8.GetBytes(keyString));
byte[] keyBytes = pbkdf.GetBytes(16);
aesAlg.Key = keyBytes;

string ivString = iv.ToString();
Rfc2898DeriveBytes zendeskDeriveBytes = new(ivString, Encoding.UTF8.GetBytes(ivString));
byte[] ivBytes = zendeskDeriveBytes.GetBytes(16);
aesAlg.IV = ivBytes;

aesAlg.Padding = PaddingMode.None;

ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

using (MemoryStream msDecrypt = new MemoryStream(encryptedText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plainText = srDecrypt.ReadToEnd();
}
}
}

return plainText;
}
Пример возвращаемого расшифрованного текста: TESTa��6�F�~4�?�0�3�p��]��]�*�R�� �p��]��]�*�R��. Что мне нужно изменить в моем коде, чтобы удалить лишние символы в конце моих данных?

Подробнее здесь: https://stackoverflow.com/questions/793 ... of-my-decr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»