DES加密解密结果为何不一致

这个要了解下DES的原理才行,待续。。。。
■网友
谢邀IV要伴随着密文走的,解密时必须使用正确的IV。IV本身不要加密
■网友
这个问题主要涉及编码、输入格式、输出格式、加密模式这几个方面的问题,还有一些细节问题比如空格与回车。 首先是编码问题,在线的编码格式一般默认是UTF-8,因此如果网页编码不是UTF-8,则会导致加密的结果不一样。因为DES算法本质上是对二进制内容进行加密,同样的文字经过不同的编码映射成的二进制内容并不相同。 其次,是输入格式问题。一般在网页的输入是文本格式(Plain Text),但是许多教程为了方便理解,写的输入格式是16进制,比如 DES算法实例讲解 这篇文章里面主要用的是16进制格式作为讲解,对于许多在线工具,明文和密钥输入用的是文本格式。因此,在输入的时候一定要注意区分。 然后,是输出格式的问题。有些在线加密工具输出会自动进行Base64编码,这样结果和直接加密的结果完全不同。DES加密的密文是16进制格式的,无法一一对应成ASCII码。密文要么以16进制输出,要么输出一堆乱码,而Base64能将一个较长的16进制数组编码为一个字符串,方便处理。 最后,是加密模式的问题。DES本身采用的是ECB(电子密码本)模式,即将加密的数据分成若干组,每组的大小跟加密密钥长度相同,这样密文输出完全由明文和密钥决定。为了进一步加强安全性,有许多安全性扩展,就诞生了别的加密模式,比如加密块链模式CBC、加密反馈模式CFB等等。不同的模式加密结果也会完全不同。 在附带一点细节问题,即空格与回车的问题。尤其是在字符串处理的时候,有些字符串会带回车换行(0x0D 0x0A),这会造成最后一个64位字符块加密有些许差别。还有一些文本框自动(trigger)去除空格,就导致文本中的空格没有被计算在内,导致加密不同。


    推荐阅读