浅谈DES加密算法

先来了解一下XOR运算和Feistel网络

XOR运算

英文全称为exclusive OR

又称为 异或

计算机符号为“⊕”

运算法则为:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

Feistel网络

Feistel 密码结构是用于分组密码中的一种对称结构。

加密一次称为一轮

DES是一种比较经典的轮循环

简单了解一下DES加密算法

英文全称为Data Encryption Standard

是目前叫为主流的对称加密算法之一。

DES是对称加密算法也是分组加密算法,对称加密算法也就是说加密和解密使用的是相同的密钥,而分组加密算法也就表示算法每次处理固定长度的数据段,DES分组的大小是64bit,如果不足64bit可以按照填充表或者其他什么规则进行补位,但是如果超过64bit就需要进行拆分递归

虽然说有64bit但是可以使用的只有56bit

哎哎,你干嘛,把刀放下

嘿嘿,DES最大产生64bit的大小,每隔7bit就有一bit作为奇偶校验位

DES的安全性完全依赖于混乱和扩散,其混乱目的是隐藏密钥,明文及密文,而扩散的目的是使明文中的有效位和密钥一起组成尽可能多的密文

也就是说DES是通过对明文进行一系列的排列和替换操作来将其明文加密

DES的明文和密文是等量转换的

比如64bit的明文 相当于 64bit的密文

加密与解密

基础的DES加密需要经过16轮加密来完成,而这个轮数没有上限

加密原理:要加密一组明文,每个子密钥按照顺序(1-16)以一系列的位操作施加于数据上,每个子密钥一次,一共重复16次。

解密原理也简单:只需要让子密钥按照逆向的顺序(16-1)对密文进行处理。

来看一张图

图片

图片来源:百度

加密原理详解

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其功能是把输入的64位数据块经过初始置换按位重新组合,并把输出分为L0 、R0两部分,每部分各长32位,然后R0与第一轮子密钥K1进行f(R0,K1)运算,运算结果再与L0进行按位异或运算,运行结果交换作为下一轮的R1,R0交换作为下一轮的L1,下一轮同样进行f(Ri,Ki)运算,以此类推共进行16轮,最后一轮不用进行交换,最后进行逆初始置换,即为密文输出。

其他链接

哔哩哔哩
会同步该博客发一些自制视频

微博
用的比较少

Github
一些源代码

知乎
不懂的我一般会在上面提问

简书
同步该博客内容相同

CSDN
同步该博客内容相同
博客首页

个人联系方式

QQ:2446264712

微信:X15019749137

邮箱:[email protected]

有意添加请备注 啊啊啊啊

发布了20 篇原创文章 · 获赞 13 · 访问量 345

猜你喜欢

转载自blog.csdn.net/Cloud_ink/article/details/105038551