【DES加密算法|密码学|信息安全】https://www.bilibili.com/video/BV1KQ4y127AT?vd_source=7ad69e0c2be65c96d9584e19b0202113
根据此视频学习
DES是对称密码中的分组加密算法
(分组加密对应流加密算法)
流加密算法就是一个字节一个字节加密
分组加密是对明文分成很多快,然后拼在一起,就是密文
DES加密就是把明文分为很多64bit块
然后密文是64位,但是我们输入其实就56位,其中8位 为校验位:
8,16,24,32,40,48,56,64 八的8个倍数
先将64 分为 32 32
R0 和L0
L1 直接等于 R0
R1要等于L0异或fun(R0,k1)
k1-k16都是48比特的子密钥
这样经过16次,就得到L16和R16
将L和R拼在一起,然后进行逆置换
现在讲一下
fun函数
先讲密文进行扩展 32bit 到48比特
48比特和子密钥进行异或
再通过s盒子进行压缩 回到32bit
然后再通过p盒置换
然后得到的再喝L0进行异或
IP置换
根据这个表,比如第一个是58,意思就是讲原来第58位的数据放在现在的第一位
(表一般是固定的)
E扩展置换
把32bit分为4*8个组
然后第一个组的第一个直接拿原始数据第一个
最后组拿最后数据那一个
然后中间的组,就直接前一个组最后一个,后一个组第一个就行
就这样扩展OK
S盒压缩处理
将48比特分为8组6bit数据,每个6比特压缩为4bit就ok
比如这个图
根据s盒表,第三行十五列
就转换成功
P盒置换
这个32bit数据再经过
第16位数据放在第一轮
最后得到的结果和L0进行异或,就得到了R1
IP逆向置换
经过16次之后,再进行逆置换(就是ip反置换,回到原来的位置)
密钥生产
64位,减去第8,16....64位
生产16个48位密码
首先经过56bit置换
分为左右28bit两部分
然后移位
最后C1D1合并在一起,通过表来置换
总体过程
然后就是加密解密了
DES加密与解密 (python) (附实例测试)_python实现des算法加密解密图形化界面-CSDN博客