我一直在尝试找出使用 DES 算法加密 byte[16] 变量的正确方法。这是场景:
- 数据应以 8 字节部分加密。加密的关键是:
byte[] {11, 11, 11, 11, 11, 11, 11, 11}
Instance Vector = new byte[8]
前 8 个字节使用(8 个字节,值为 0)加密。- 加密的结果将是接下来 8 个字节的 IV。(这是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 加密技术加密数据的正确方法吗?