0

我正在使用 DES 实现一个伪随机位生成器。每个生成的数字都依赖于上一步中的加密数字。这就是为什么我想使用 CryptoStream 的 ICryptoTransform,但是:

  • 我不明白如何ICryptoTransform.TransformBlock()工作
  • ICryptoTransform.TransformFinalBlock()返回一个比输入长 8 个字节的数组(这让我很困扰 - 如果我没记错的话,DES 加密 64 位并返回 64 位)

代码:

Random random = new Random();
byte[] input = new byte[8];
random.NextBytes(input);
byte[] s = new DESCryptoServiceProvider()
    .CreateEncryptor()
    .TransformFinalBlock(input, 0, 8);

sbyte[16],为什么不byte[8]?

4

1 回答 1

1

默认情况下,输入将使用 PKCS 填充填充到下一个块大小。要禁用填充,您可以执行以下操作:

DESCryptoServiceProvider mDES = new DESCryptoServiceProvider();
mDES.Padding = PaddingMode.None;
于 2013-05-13T13:35:16.500 回答