繁体   English   中英

为什么DESCryptoServiceProvider()。CreateEncryptor()。TransformFinalBlock()的返回缓冲区比输入长8个字节?

[英]Why is the return buffer of DESCryptoServiceProvider().CreateEncryptor().TransformFinalBlock() 8 bytes longer than the input?

我正在使用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]?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM