DES加密算法原理简介
简化版流程
3.1 数据加密标准DES
DES算法将明文按64位分组,使用的密钥长度为64位(实际参与加密的有56位)。
密钥的第8、16、24、…、64位作为校验位,不参与加密
DES的加密思想是对密钥和明文都进行一系列复杂变换处理,中间分为多个小段单独异或加密,最后再合成变换得到最终密文。符合所谓的混淆原则和扩散原则。
混淆原则:密文与其对应的明文与密钥的关系足够复杂。
扩散原则:密文中的每一位都受到明文和密钥中的尽可能多位的影响,以隐蔽明文
的统计特性和结构规律。
3.1.1 子密钥
DES中的密钥不是直接使用的,要经过一系列变换才能拿去跟明文做异或。
提取有效位(56位)
DES中密钥的转换表(DesTransform[56])
把64位密钥提取出56位。(去除校验位)
后续会用到各种转换表,这里简单解释一下,比如第一行第一列的“57”,意思就是把原本数据表中第57个数据填到转换后的新表中的第一行第一列这个位置。
旋转左移,16种结果
针对DES子密钥每一轮的旋转次数(Round轮,Rotations旋转次数)(DesRotations)
为了得到16个不同的子密钥,先将上一步得到的56位密钥分为两组各28位,接着根据该旋转表,分别旋转左移对应位数,旋转完再合并,这样就得到一组新子密钥,而下一组是在前一组的基础上再次对半分并旋转左移获得的。最终生成16组子密钥。
置换选择
DES子密钥的置换选择(Despermuted[48])
其实就是进一步缩小密钥位数。把上一步获得的16组子密钥分别通过该转换表。
于是,我们得到了16组各48位的子密钥。
3.1.2 加密解密
明文按照64位一组分组。以下操作针对一组64位的明文。
初始置换
DES中数据的初始置换(DesInitial[64])
先将明文按转换表打乱初始化,并将处理后的数据分为两组各32位,记为L0和R0。
扩展置换
DES中数据块的扩展置换(DesExpansion[48])
将Ri由32位转换扩展到48位。
目的是在加密数据的过程中制造一些雪崩效应。
使用数据块中的1位,将在下一步操作中影响更多位,从而产生扩散效果。
XOR
一旦扩展置换完成,便将所得48位数据Ri与先前的子密钥Ki做XOR异或运算。
迭代16次,每次使用对应次序的子密钥。
S盒替换
S盒替换表一共有8个。主要作用是重新把48位数据压缩为32位。
S盒为数据增加了不确定性,从而提升了安全性。
将上一步扩展后获得的48位数据Ri按6位一组,分成8组。
例:
假设我们取第一组数据按上图处理,得到第三行,第15列,则在第一张S盒替换表中找到对应位置的数,这里我们假设找到的数是13,便再将其转换为二进制数1101,这样,便完成了6位数据压缩为4位数据的过程。
P盒置换
DES中数据块的P盒置换
将上一步获得的32位数据经过P盒置换表。
两组异或
从第2步到第5步的操作定义为一个函数f。假设我们回到一开始获得的 R 0 R_0 R0,经过函数f后,输出的应该是一组32位的数据,我们设其为 R 0 ′ R_0' R0′。接下来的操作就是将一开始的另一组数据 L 0 L_0 L0与 R 0 ′ R_0' R0′进行XOR异或操作,结果值设为 L 0 ′ L_0' L0′。
交换
现在,经过一系列变换,我们有了新的左右分组 L 0 ′ L_0' L0′和 R 0 ′ R_0' R0′,于是,我们交换两组的位置,即设 R 1 = L 0 ′ R_1=L_0' R1=L0′, L 1 = R 0 ′ L_1=R_0' L1=R0′。
迭代
分组 L i L_i Li和 R i R_i Ri重复第2步到第7步的操作,总共要完成16轮的迭代。其中,最后一轮中左右分组不用交换。
第16轮的 R 16 R_{16} R16在左边, L 16 L_{16} L16在右边。
连接
将最后得到的左分组和右分组重新合并,得到一组64位数据。
最终置换
DES中数据块的最终置换
最终置换其实就是初始置换的逆转换。数据经过该转换表得到最终结果。
总结:
对于这第1步到第10步,如果输入的是明文,输出就是密文;如果按照从最后一步倒回来输入密文,输出就是明文。
加密过程:
1、以K1加密
2、以K2解密
3、以K3加密
解密过程(密钥顺序及应用方向与加密过程相反):
1、以K3解密
2、以K2加密
3、以K1解密
说明:K1、K2、K3是密钥。
整个流程可以用下图表示:
参考资料:
数据加密算法–详解DES算法原理与实现
DES加密算法-《信息安全技术》课程微课设计
DES加密算法原理简介相关推荐
- DES加密算法原理及代码实现
目录 一.简要描述 二.名词解释 数据填充 分组加密 算法特点 置换 三.加密运算 1.加密运算流程图 2.初始置换 3.生成子秘钥 PC-1置换 PC-2置换 4.迭代的过程(f函数) f函 ...
- 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码
文章目录 1.什么是DES 2.DES的基本概念 3.DES的加密流程 4.DES算法步骤详解 4.1 初始置换(Initial Permutation,IP置换) 4.2 加密轮次 4.3 F轮函数 ...
- MD5、RSA、DES加密算法原理解析
文章转自:http://www.iplaysoft.com/encrypt-arithmetic.html MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计 ...
- DES的原理及python实现
DES加密算法原理及实现 DES是一种对称加密算法[即发送者与接收者持有相同的密钥],它的基本原理是将要加密的数据划分为n个64位的块,然后使用一个56位的密钥逐个加密每一个64位的块,得到n个64位 ...
- 加密算法概念简介--MD5、SHA、DES、3DES、AES、RSA、ECC
MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言 ...
- 算法科普:神秘的 DES 加密算法
1 前言 DES 算法是一种常见的分组加密算法,由IBM公司在1971年提出.DES 算法是分组加密算法的典型代表,同时也是应用最为广泛的对称加密算法.本文将详细讲述DES 的原理以及实现过程. 1. ...
- HTTPS 加密算法原理详解
本文讲的是HTTPS 加密算法原理详解, 前言 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一 ...
- Linux安全原理简介
Linux安全原理简介 介绍 在设置Linux计算机的所有阶段,安全性应是首要考虑之一.要在计算机上实施良好的安全策略,需要对Linux的基础知识以及所使用的某些应用程序和协议有充分的了解. Linu ...
- DES加密算法的C++实现
<信息安全技术>这门课又在讲 DES 加密算法了,以前用纯C写过一次,这次我用 C++ 重新写了一个,写篇文章以备后用.本文介绍了 DES 算法加密的大致步骤和整体流程. 一.DES算法原 ...
最新文章
- 机器学习(5)--化无限为有限
- Android而一个超级漂亮的日历控件
- 随机森林与梯度提升树
- 怎么在pycharm打开浏览器_Mac OS下搭建 python3+pycharm+selenium+Chrome环境
- leetcode129. 求根到叶子节点数字之和
- shell读取php 数组长度,shell数组的定义、数组长度
- python查找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法...
- 在线CSV转SQL工具
- 网络助手之NABCD
- 杨辉三角数学性质及参考例题
- 关于亿图图示缩放锁定1%的问题
- 实战|朝阳医院药品销售分析案例
- 关于舵轮AGV 的数学模型
- springboot集成jooq异常集合
- 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
- 大学计算机协会大一面试,大一学生社团面试自我介绍
- 计算机专业考研是英语几,计算机考研考英语一还是英语二
- sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set的解决方案(linux)
- 【PMBOK重点知识】工作绩效数据、工作绩效信息、工作绩效报告之间的区别和关系
- 手机端input控制键盘弹出