我TripleDESCryptoServiceProvider
用来加密数据,我注意到的一件事是,当我使用它解密数据时,数据有时会以一系列'\0'
字符结尾。所以,如果我加密"Sachin"
然后解密这个的加密版本,我会回来"Sachin\0\0"
。这是一个问题吗?
问问题
259 次
1 回答
3
在这种情况下,您的加密方法可能会添加一些填充,即零填充。您的解密方法不需要填充,因此它只是将其解密,就好像它是原始明文的一部分一样。
DES 是一种块密码,它只能处理 64 位(8 字节)块中的数据。任何明文都被填充到下一个块边界。
零填充不好,因为如果纯文本以零字节结尾(如 C 风格的字符串),就会出现问题。更改您的加密方法以添加PKCS#5 padding,并更改您的解密方法以期望相同。然后填充将被自动删除,您将永远看不到它。
于 2012-05-22T14:47:21.290 回答