Разница в поведении между Aesmanaged и Aes.create ()C#

Место общения программистов C#
Ответить
Anonymous
 Разница в поведении между Aesmanaged и Aes.create ()

Сообщение Anonymous »

Я переношу приложение из .NET Framework в .net и заметил некоторую разницу в поведении после преобразования.

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

public static byte[] AesEncrypt(byte[] key, byte[] iv, byte[] data)
{
byte[] encrypted;
using (AesManaged aes = new AesManaged())
{
aes.Key = key;
aes.IV = iv;
aes.BlockSize = 128;
ICryptoTransform aesEnc = aes.CreateEncryptor();

using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, aesEnc, CryptoStreamMode.Write))
{
csEncrypt.Write(data, 0, data.Length);
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}

public static void Main()
{

var key = new byte[] { 78, 47, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var data = new byte[] { 78, 47, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

var result = AesEncrypt(key, iv, data);
}
в .net Framework, результат всегда будет возвращать
89, 156, 29, 52, 98, 240, 113, 210, 16, 211, 121, 61, 53, 174, 12, 229
< /code>
В .net он возвращает совершенно разные значения. В верхней части этого значение каждый раз отличается (как это было бы случайно). < /P>
После некоторой дополнительной проверки я обнаружил, что использование < /p>
Aes aes = Aes.Create()
< /code>
вместо < /p>
AesManaged aes = new AesManaged()
< /code>
в .NET Framework приведет к тому же поведению, что и в .NET. Поэтому я понимаю, что приложение .NET реализует aesmanaged (), называя то же самое, что и aes.create (), в качестве запасного. < /P>
Почему это поведение происходит? Для того же самого IV/Key/Data Data, не должны ли результат шифрования точно таким же? Я, должно быть, чего -то упускаю.

Подробнее здесь: https://stackoverflow.com/questions/796 ... aes-create
Ответить

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

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

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

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

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