2

TripleDESCryptoServiceProvider用来加密数据,我注意到的一件事是,当我使用它解密数据时,数据有时会以一系列'\0'字符结尾。所以,如果我加密"Sachin"然后解密这个的加密版本,我会回来"Sachin\0\0"。这是一个问题吗?

4

1 回答 1

3

在这种情况下,您的加密方法可能会添加一些填充,即零填充。您的解密方法不需要填充,因此它只是将其解密,就好像它是原始明文的一部分一样。

DES 是一种块密码,它只能处理 64 位(8 字节)块中的数据。任何明文都被填充到下一个块边界。

零填充不好,因为如果纯文本以零字节结尾(如 C 风格的字符串),就会出现问题。更改您的加密方法以添加PKCS#5 padding,并更改您的解密方法以期望相同。然后填充将被自动删除,您将永远看不到它。

于 2012-05-22T14:47:21.290 回答