一次一密,DES


前言

个人学习整理笔记,希望能对后来者有所帮助。


提示:以下是本篇文章正文内容,下面案例可供参考

一、一次一密(One-time password)

一个序列密码称为一次一密必须满足以下条件:

  1. 通过真随机数生成器得到密钥序列s0,s1,s2,…
  2. 只有合法的通信方才知道密钥序列;
  3. 每个密钥序列位si仅适用一次。这意味着每个明文位都需要一个密钥位,因此,一次一密的密钥长度必须和明文长度一样

一次一密是无条件安全的。

实例:假设发送方要发送“short"这个单词给接收方。

发送方:

  1. 使用ASCII编码来转换 “short”这个词,转换后会得到下面这一串二进制信息:
    0111001101101000011011110111001001110100

  2. 接下来你需要一个和上面二进制串长度完全一致的密钥,如:
    0110010101101010001110010010011101100100

  3. 我们将这两组字符串进行XOR 运算,得到:
    0001011000000010010101100101010100010000
    发送方将这串数据发送给接收方

接收方:

接收方得到数据后将其与密钥进行XOR运算,得到发送方的数据,再利用ascii编码即可得到正确的信息。

二、DES算法

DES(Data Encryption Standard,数据加密标准)是一种使用56位密钥对64位长分组进行加密的密码。它是一种对称密码,即加密过程和解密过程使用相同的密钥。DES对明文中的每个分组的加密过程都包含16轮,且每轮操作完全相同,每轮采用的子密钥不同,并且所有子密钥ki都是从主密钥k中推到出来的。

DES加密

  1. 初始置换( I P IP IP

    对给定的64位明文,通过置换 IP 表重新排列,然后分成左右两个部分 L 0 L_0 L0 R 0 R_0 R0 ,每部分32位:

    4
  2. 16轮Feistel结构迭代

    L i = R i − 1 L_i=R_{i-1} Li=Ri1 R i = L i − 1 ⊕ F ( R i − 1 , K i ) , i = 1 , . . . , 16 R_i=L_{i-1}\oplus F(R_{i-1},K_i),i=1,...,16 Ri=Li1F(Ri1,Ki),i=1,...,16

    每一轮迭代过程:

    6
    • 扩充置换表(E):将32位的输入扩展为48位

      7
    • 将得到的48位与轮密钥 K i K_i Ki 进行 ⊕ \oplus 操作,然后将8个6位长的分组送入到8个S盒中进行非线性变换,得到8个4位的输出

      8

      (S-盒可以将6位的输入映射为4位的输出,按照6位中首尾两位组成的二进制位行,中间四位组成的二进制位列,从S盒中进行查询,得到4位输出)例:100101,首尾两位为11,则表示数字3,则第4行,中间四位0010,则表示数字2,则为第3列(行列均从0开始计数)

    • 将32位的输出进行P置换

      9

      得到的32位输出为下一轮的 R i + 1 R_{i+1} Ri+1

  3. 末尾置换( I P − 1 IP^{-1} IP1

    L 16 L_{16} L16 R 16 R_{16} R16 利用 I P − 1 IP^{-1} IP1 做逆置换,得到密文 y y y.

    5

DES子密钥产生流程

10
  1. 置换选择1

    64位的密钥为8个字节,每个字节的前7位是真正的密钥位,第8位为奇偶校验位,因此DES真正密钥位56位
    置换选择1的作用:从64位中去除8个奇偶校验位;剩余56位打乱重排,且将前28位作为 C 0 C_0 C0,后28位作为 D 0 D_0 D0。下图显示了 C 0 , D 0 C_0,D_0 C0,D0 分别为原来密钥的第几位。

    11
  2. 循环左移

    12
  3. 置换选择2

    C i C_i Ci D i D_i Di 合并为一个56位的中间数据,置换选择2从中选择一个48位的子密钥 K i K_i Ki

    13

DES解密

由于DES的运算时对合运算,所以加密和解密可用同一个运算,只是子密钥使用顺序不同。
把64位密文当做明文输入,而且第一次解密迭代使用子密钥 K 16 K_{16} K16,第二次解密迭代使用子密钥 K 15 K_{15} K15,…,第十六次解密迭代使用子密钥 K 1 K_1 K1,最后输出的就是64位明文。

解密过程可用如下数学公式表示:
在这里插入图片描述


总结

本文主要介绍了一次一密的概念和DES算法。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值