【密码学】DES算法流程

分组密码概述

  • 流密码
    • 逐比特加密。
  • 加密方法
    • 大文本加密使用分组密码,利用了其加密快的优点。
    • 分组密码的密钥使用公钥加密。
  • 分组加密要求
    • 安全性
    • 运行速度
    • 存储量
    • 实现平台
    • 运行模式
  • 概率型加密
    • 密文一定比明文长。
  • 混沌原则
    • 将明文、密文和密文关系变得复杂。
  • 扩散原则
    • 将明文的统计规律和结构规律散射到相当长的一段统计中去。
  • 加密要求
    • 分组足够多
    • 密钥量足够大
  • 弱密钥
    • 两个密钥加密能够得到完全相同的结果。
  • 常见分组密码结构
    • Feistel NetDES
    • SP NetAES

SP Net

  • 代换

    • 明文和密文分组都长为n比特,明文分组都对应唯一的一个密文分组,称这样的可逆变换为代换

    • 可 逆 变 换 的 个 数 有 2 n ! 个 。 可逆变换的个数有2^n!个。 2n!

  • 最基本的密码运算

    • 代换(Substitution
    • 置换(Permutation
  • 图示

代换S一般被称为混淆层,置换P被称为扩散层。

Feistel Net

  • 乘积密码
    • 顺序的执行两个及以上基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果。
  • 思想
    • 利用乘积密码实现混淆和扩散。
  • 加密迭代算法

L E i = R E i − 1 R E i = L E i − 1 ⊕ F ( R E i − 1 , K i ) LE_{i}=RE_{i-1}\\RE_i=LE_{i-1}\oplus F(RE_{i-1},K_i) LEi=REi1REi=LEi1F(REi1,Ki)

LR是明文平分的两份,在完成n次迭代后再合并到一起生成密文。

K是密钥,i表示为第i轮的子密钥。

F函数是DES加密的关键。

  • 解密迭代算法

L D i + 1 = R D i = L E n − i = R E n − i − 1 R D i + 1 = L D i ⊕ F ( R D i , K n − i ) = L E n − i − 1 LD_{i+1}=RD_{i}=LE_{n-i}=RE_{n-i-1}\\RD_{i+1}=LD_i\oplus F(RD_i,K_{n-i})=LE_{n-i-1} LDi+1=RDi=LEni=REni1RDi+1=LDiF(RDi,Kni)=LEni1

实际上就是加密流程的逆过程,经过n次迭代之后得到明文。

  • 图解

DES算法

简介

  • 明文和密文分组长度都为64位。
  • 密钥长度为64为,去掉8位奇偶校验位,有效密钥长度为56位。
  • 算法包括
    • 初始置换IP
    • 16轮迭代的乘积变换
    • 逆初始置换
    • 16个子密钥产生器

流程

  • 利用了Feistel Net的框架。

初始置换

逆初始置换

轮结构

  • 选择扩展运算E

  • 选择压缩运算S

48位输入分为8份,顺序输入8S盒。

  • S盒代换

6位输入的第1位和第6位作为二元组决定行号,第2位到第5位作为四元组决定列号。

元组的高位对应输入的高位

对应到表中的内容可以转换为4位二进制组。

  • P盒置换

密钥编排

PC-1

PC-2

移位次数

i移位次数i移位次数
1191
21102
32112
42122
52132
62142
72152
82161

加密实现

等俺偷个懒把解密算法一起打出来再发

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值