DES算法的⼏种加密模式和填补⽅式
DES加密
DES是⼀种对称加密(Data Encryption Standard)算法。于1977年得到美国政府的正式许可,是⼀种⽤56位密钥来加密64位数据的⽅法。⼀般密码长度为8个字节,其中56位加密密钥,每个第8位都⽤作奇偶校验。
DES算法⼀般有两个关键点,第⼀个是加密算法,第⼆个是数据补位。
加密算法常见的有ECB模式和CBC模式:
ECB模式:电⼦密本⽅式,这是JAVA封装的DES算法的默认模式,就是将数据按照8个字节⼀段进⾏DES加密或解密得到⼀段8个字节的密⽂或者明⽂,最后⼀段不⾜8个字节,则补⾜8个字节(注意:这⾥就涉及到数据补位了)进⾏计算,之后按照顺序将计算所得的数据连在⼀起即可,各段数据之间互不影响。
CBC模式:密⽂分组链接⽅式,这是.NET封装的DES算法的默认模式,它⽐较⿇烦,加密步骤如下:
java加密方式有哪些
1.⾸先将数据按照8个字节⼀组进⾏分组得到D1D
2.第⼀组数据D1与向量I异或后的结果进⾏DES加密得到第⼀组密⽂C1(注意:这⾥有向量I的说法,ECB模式下没有使⽤向量I)
3.第⼆组数据D2与第⼀组的加密结果C1异或以后的结果进⾏DES加密,得到第⼆组密⽂C2
4.之后的数据以此类推,得到Cn
5.按顺序连为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。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。