DES是一种对称加密(Data Encryption Standard)算法。
于1977年得到美国政府的正式容许,是一种用56位密钥来加密64位数据的方法。
一样平常密码长度为8个字节,个中56位加密密钥,每个第8位都用作奇偶校验。

DES算法一样平常有两个关键点,第一个是加密算法,第二个是数据补位。

加密算法常见的有ECB模式和CBC模式:

des加密解密phpjavaDES算法的几种加密模式和弥补方法 NoSQL

ECB模式:电子密本办法,这是JAVA封装的DES算法的默认模式,便是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,末了一段不敷8个字节,则补足8个字节(把稳:这里就涉及到数据补位了)进行打算,之后按照顺序将打算所得的数据连在一起即可,各段数据之间互不影响。

CBC模式:密文分组链接办法,这是.NET封装的DES算法的默认模式,它比较麻烦,加密步骤如下:

1.首先将数据按照8个字节一组进行分组得到D1D2......Dn(若数据不是8的整数倍,就涉及到数据补位了)

2.第一组数据D1与向量I异或后的结果进行DES加密得到第一组密文C1(把稳:这里有向量I的说法,ECB模式下没有利用向量I)

3.第二组数据D2与第一组的加密结果C1异或往后的结果进行DES加密,得到第二组密文C2

4.之后的数据以此类推,得到Cn

5.按顺序连为C1C2C3......Cn即为加密结果。

数据补位一样平常有NoPadding和PKCS7Padding(JAVA中是PKCS5Padding)添补办法,PKCS7Padding和PKCS5Padding实际只是协议不一样,根据干系资料解释:PKCS5Padding明确定义了加密块是8字节,PKCS7Padding加密快可以是1-255之间。
但是封装的DES算法默认都是8字节,以是可以认为他们一样。
数据补位实际是在数据不满8字节的倍数,才补充到8字节的倍数的添补过程。

NoPadding添补办法:算法本身不添补,比如.NET的padding供应了有None,Zeros办法,分别为不添补和添补0的办法。

PKCS7Padding(PKCS5Padding)添补办法:为.NET和JAVA的默认添补办法,对加密数据字节长度对8取余为r,如r大于0,则补8-r个字节,字节为8-r的值;如果r即是0,则补8个字节8。
比如:

加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888。