Я пытался найти правильный способ зашифровать байтовую [16] переменную с помощью алгоритма DES. Вот сценарий:
- Данные должны быть зашифрованы 8-байтовыми частями. ключ для шифрования:
byte[] {11, 11, 11, 11, 11, 11, 11, 11}
- Первые 8 байтов зашифрованы с использованием
Instance Vector = new byte[8]
(8 байтов со значением 0). - зашифрованный результат будет IV для следующих 8 байтов. (это CBC?)
- последние 8 байт - это результат, который я должен отправить.
Имея эту информацию, я реализовал метод Encrypt
следующим образом:
public static byte[] Encrypt(byte[] data)
{
var dataChunk = new byte[8];
var IV = new byte[8];
var result = new byte[8];
var key = new byte[] { 11, 11, 11, 11, 11, 11, 11, 11 };
for (int counter = 0; counter < data.Length / 8; counter++)
{
// Copy the next 8-byte chunk.
Array.Copy(data, counter * 8, dataChunk, 0, 8);
var des = System.Security.Cryptography.DES.Create();
des.Key = key;
des.IV = IV;
des.Padding = PaddingMode.None;
ICryptoTransform cryptoTransform = des.CreateEncryptor(key, IV);
// Encrypt the datra chunk.
cryptoTransform.TransformBlock(dataChunk, 0, 8, result, 0);
// Set the new IV.
Array.Copy(result, IV, 8);
}
return result;
}
Это правильный способ шифрования данных с использованием шифрования DES?