DES加密算法

一:理论简介:

1.DES是一种最通用的对称密钥算法。

(基于密钥的算法通常分为:对称算法和公开密钥算法)

      (对称性体现在加密密钥能够从解密密钥推算出来,反之亦然)

      (在大多数对称算法中,加密,解密的密钥是相同的)

2.DES的加密解密的密钥是相同的。

(可见,对称密钥算法里面的密钥都是保密的)

(而公开密钥算法的加密密钥是公开的,解密密钥是保密的)

3.DES加密算法的整体流程图。

补充:上图框架

  1. 初始置换IP;
  2. 子秘钥Ki的获取;
  3. 密码函数f
  4. 尾置换IP-1

二:准备工作

1.有明文M(64位二进制)=0123456789ABCDEF;

      (换成二进制为0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111)

2.有密钥K(64位二进制)=133457799BBCDFF1;

      (对应二进制)0001 0011 0011 0100 0101 0111 0111 1001 1001 1011 1011 1100 1101 1111 1111 0001

       (其中包括8位奇偶校验码位置为8,16,24,32,40,48,56,64)

3.有许许多多的表格。

        (S盒,E盒,P盒,IP等)。

三:详细步骤

1.密钥的变换

1)按照下表中的规则对各个位进行交换,生成16个子钥(64位变成56位)

(通过交换规则表去掉了奇偶校验位)

交换规则表(8*7):57      49       41        33        25         17          9

                              1          58       50       42        34          26         18

                               10        2         59       51        43         35          27

                                19        11        3        60        52         44          36

                                 63        55       47       39         31         23          15

                                  7          62       54       46         38         30           22

                                  14          6         61      53          45        37            29

                                  21          13        5        28         20         12             4

K*= 1111000  0110011  0010101  0101111  0101010   1011001    1001111  0001111

2)把56位的K*变成两部分----前28位C0和后28位D0;

因此:C0(28位) = 1111000  0110011  0010101  0101111

          D0(28位) = 0101010   1011001    1001111  0001111

3)移位操作:

    下来依次是C1,D1为C0,D0左移一位,C2,D2为C1,D1左移一位,C3,D3为C2,D2左移两位.......

所以,可以得到C1D1----C16D16的结果为:

C1 = 1110000 1100110 01010101011111

D1 = 1010101011001100111100011110

C2 = 1100001100110010101010111111

D2 = 0101010110011001111000111101

C3 = 0000110011001010101011111111

D3 = 0101011001100111100011110101

................

.................

C15 = 1111100001100110010101010111

D15 = 1010101010110011001111000111

C16 = 1111000011001100101010101111

D16 = 0101010101100101101110001111

PC-2(8*6)----为一个8*6的矩阵,将上面得到的16个子钥按照下表的规律进行位的交换

14        17        11       24        1        5

3           28       15        6         21      10

23          19       12       4          26      8

16           7         27      20         13     2

41           52        31     37          47     55

30            40        51    45           33    48

44            49        39     56          34     53

46             42        50     36          29     32

上述过程也就是让CnDn经过另外一个表,该表序号

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值