一次一密,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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值