对称加密算法

DES

算法原理

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:

1.初始置换

将输入的64位数据块按位重新组合,并把输出分为Lo,Po两个部分每部分各位32位。置换规规则是将输入的第58位换到第一位,第50位换到第2位……(没8位一换)依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。

2.逆置换

经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

使用

DES算法的入口参数有三个:Key、Data、Mode。
其中Key为8个字节共64位,是DES算法的工作密钥;
Data也为8个字节64位,是要被加密或被解密的数据;
Mode为DES的工作方式,有两种:加密或解密。

3DES

3DES是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密。

它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。

该方法使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。

3DES加密过程为:C=Ek3(Dk2(Ek1(P)))

3DES解密过程为:P=Dk1(EK2(Dk3(C)))

①两个密钥合起来有效密钥长度有112bit,可以满足商业应用的需要,若采用总长为168bit的三个密钥,会产生不必要的开销。

②加密时采用加密-解密-加密,而不是加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。因为当K1=K2时,三重DES的效果就和原来的DES一样,有助于逐渐推广三重DES。

AES

1.简介

AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。

AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。相对而言,AES的128密钥比DES的56密钥强1021倍[。AES算法主要包括三个方面:轮变化、圈数和密钥扩展。

2.密钥

密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥

从安全性性来看,AES256安全性最高,从性能上来看AES128性能最高。本质上因为加密论述不同。

3.填充

AES采用分组加密


AES分组加密.png

AES在对明文加密时,是将明文拆分为一个个独立的铭文块,每个铭文块长度128bt。

这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

But!!!

这里涉及到一个问题:

假如一段明文长度是196bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。

填充方式

1.Nopadding

不做任何填充,但是要求明文必须是16字节的整数倍。

2.PKCS5Padding
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}
3.IS010126Padding
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

4.其他

1).Zeros填充:全部填充为0的字节

2). ANSIX923 填充: 填充为0的字节序列,最后一个字节记录填充的总字节.

例: F9 00 00 00 00 00 00 07 //第二块

注意:区别在于PKCS5的规范中只讨论了 (8字节/64位) 块的加密, 而在PKCS7Padding定义中,对于块的大小是不确定的。因此PKCS7可以用于不是64位整数倍的块的填充。并且向下兼容PKCS5Padding。对于AES加密(16字节/128位),这两种填充方式效果相同。

DES 、AES 、RSA比较

http://www.jiamisoft.com/blog/21306-deses.html

你可能感兴趣的:(对称加密算法)