Мне трудно понять, что здесь происходит. Код ниже преобразует массив байтов с помощью шифратора и преобразует его обратно с помощью дешифратора. Но первый вызов TransformBlock ничего не делает, а второй заполняет правильные значения. Любая идея, что я делаю неправильно, пожалуйста?
Random random = new Random();
ICryptoTransform encryptor, decryptor;
byte[] key = new byte[16];
byte[] iv = new byte[8];
random.NextBytes(key);
random.NextBytes(iv);
TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
encryptor = tripleDESCryptoServiceProvider.CreateEncryptor(key, iv);
decryptor = tripleDESCryptoServiceProvider.CreateDecryptor(key, iv);
byte[] data = new byte[8];
random.NextBytes(data);
byte[] crypted = new byte[8];
byte[] decrypted = new byte[8];
encryptor.TransformBlock(data, 0, 8, crypted, 0);
decryptor.TransformBlock(crypted, 0, 8, decrypted, 0);
decryptor.TransformBlock(crypted, 0, 8, decrypted, 0);
TransformFinalBlock
вместо этого. Без него код не знает, нужно ли распаковывать, и оставляет байты во внутреннем буфере. - person Maarten Bodewes   schedule 21.11.2018PaddingMode.None
? - person Maarten Bodewes   schedule 23.11.2018