DES加密算法

本文详细介绍了DES加密算法的理论基础和工作流程,包括理论简介、准备工作、详细步骤、密文生成。通过对密钥的变换和明文的处理,阐述了DES如何进行数据加密。同时,文章还提供了源代码供读者参考,帮助理解DES加密算法的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:理论简介:

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 = 101010101100110011110001

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值