DES加密总结

我是IT修真院的散修学员,正在学习java任务五,下面是我对DES加密的总结

加密解密过程

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

如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;

如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

总体过程

明文64位->初始置换IP->16轮加密变换->逆初始置换IP-1->密文。


子密钥生成


子密钥生成示意图

1.   PC-1为选择置换,可以去掉奇偶校验位。经过PC-1,把输入的64位密钥转换成56位。并把将这56位分成两块C0(28位)和D0(28位);

2.    LSi是表示对Ci-1和Di-1进行循环左移变换,其中LS1,LS2,LS9,LS16是循环左移1位,其余为2位。

3.   C1和D1在次经过循环左移变换,生成C2和D2,然后C2和D2合并,通过选择置换PC-2生成密钥K2(48位);PC-2也是选择置换,它是用于从Ci和Di中选取48位作为密钥Ki。

加密函数原理


加密原理示意图

1.  E是把32比特(即上面所提到的64比特分为俩个32比特。)的输入扩展为48比特。

2.  将E置换后的结果与48位的Ki异或,结果当然依然是48位

3.  把异或48位结果平均分为8组B1,B2…B8,每组就是6比特。每组Bi用Si盒处理。s盒处理结束后,进去的是48位,出来的是32位。具体过程如下

    a.  Si盒共16行4列,注意行号是0-15,列号是0-3

    b.  Bi组共6bit

            i.  取出第一和第六bit共2bit ,把它转换成十进制,表示范围就是0-3

            ii.  取出第二到五bit共4bit ,把它转换成十进制,表示范围就是0-15

       c.  把Bi中取得的两个数字分别作为行号和列号,去Bi对应的Si的对应行和列读取数值。读到的数值是十进制0-15范围内的数字,把这个数字转换成二进制就是4bit范围内的数值

        d.  这样共8个B ,也就最终从8个对应的S盒中共取出8X4bit=32bit的内容。总结一下就是传进来的是48bit ,经过S盒处理后出来的就是32bit

4.  P为32位置换函数,把S盒处理结果的32位输入进去,得到32位的处理结果。

这样最终从输入32位,经过内部一系列操作,又输出了32位。

实际应用思路

在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。

关于IT修真院

欢迎到IT修真院学习IT技术,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄一对一可见指导。快来与我一起学习吧http://www.jnshu.com,我真的获益良多!

还有,那啥,虽然跟修真院老大未曾谋面,但他既然把夸他很帅列在了修真任务中,而我一路学习下来感觉其他任务都非常靠谱,那这个任务的质量肯定也不差,所以老大很帅!

你可能感兴趣的:(DES加密总结)