8 字节纯文本的 DES 加密产生 16 字节数组
Posted
技术标签:
【中文标题】8 字节纯文本的 DES 加密产生 16 字节数组【英文标题】:DES encryption of 8 bytes plain text results in 16 bytes array 【发布时间】:2009-08-11 20:04:09 【问题描述】:我正在使用此代码使用 8 字节密钥加密 8 字节纯文本,但结果始终是 16 字节数组。
public static byte[] Encrypt(byte[] PlainText, byte[] key)
MemoryStream ms = new MemoryStream();
DESCryptoServiceProvider mDES = new DESCryptoServiceProvider();
mDES.Mode = CipherMode.ECB;
mDES.Key = key;
CryptoStream encStream = new CryptoStream(ms, mDES.CreateEncryptor(), CryptoStreamMode.Write);
BinaryWriter bw = new BinaryWriter(encStream);
bw.Write(PlainText);
bw.Close();
encStream.Close();
byte[] buffer = ms.ToArray();
ms.Close();
return buffer;
输出的前 8 个字节是我所期望的,但其余的我不知道它是什么......这段代码有问题吗?
【问题讨论】:
【参考方案1】:输入将使用PKCS padding 填充到下一个 块大小。 7 字节输入将被填充到 8。8-15 到 16。16-23 到 24 等等。
【讨论】:
太棒了!添加 mDES.Padding = PaddingMode.None 有效.. 谢谢 只要知道纯文本的大小就可以了。否则,您将需要特定的填充方法来确定纯文本的大小(对于查看此 Q/A 的其他人)。以上是关于8 字节纯文本的 DES 加密产生 16 字节数组的主要内容,如果未能解决你的问题,请参考以下文章