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