为什么DESCryptoServiceProvider(). createencryptor (). transform

本文关键字:transform createencryptor DESCryptoServiceProvider 为什么 | 更新日期: 2023-09-27 18:13:22

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

  • 我不明白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]?

为什么DESCryptoServiceProvider(). createencryptor (). transform

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

DESCryptoServiceProvider mDES = new DESCryptoServiceProvider();
mDES.Padding = PaddingMode.None;