初次接触密码学是在大二的<<现代密码学>>课堂上,彼时仅对理论基础进行了学习,后来参加CTF比赛,为了解答其中 Crypto 模块,将课堂学到的知识运用了起来,但总的来说研究并不深,加之近段时间没有再碰过了,故此有了写此文的想法,一是为了自己复习,二是为了此刻正在看文章的你提供一点参考。
会议和期刊
密码学三大顶会
编号 | 会议简称 | 会议名称 | 出版社 | 会议网址 |
---|---|---|---|---|
1 | Crypto | International Cryptology Conference | Springer | https://iacr.org/meetings/crypto/ |
2 | Eurocrypt | European Cryptology Conference | Springer | https://iacr.org/meetings/eurocrypt/ |
3 | Asiacrypt | Annual International Conferenceon the Theory and Application of Cryptology and Information Security | Springer | https://iacr.org/meetings/asiacrypt/ |
信息安全四大顶会
编号 | 会议简称 | 会议名称 | 出版社 | 会议网址 |
---|---|---|---|---|
1 | CCS | ACM Conference on Computer and Communications Security | ACM | http://dblp.uni-trier.de/db/conf/ccs/ |
2 | S&P | IEEE Symposium on Security and Phivacy | IEEE | http://dblp.uni-trier.de/db/conf/sp/ |
3 | Usenix Security | Usenix Security Symposium | USENIX Association | http://dblp.uni-trier.de/db/conf/uss/ |
4 | NDSS | ISOC Network and Disthibuted System SecuritySyumposium | ISOC | https://www.ndss-symposium.org/ |
计算机类三大权威刊物
编号 | 名称 | 主办单位 | 网址 |
---|---|---|---|
1 | 软件学报 | 中国计算机学会、中国科学院软件研究所 | http://www.jos.org.cn |
2 | 计算机学报 | 中国计算机学会、中国科学院计算技术研究所 | http://cjc.ict.ac.cn/ |
3 | 计算机研究与发展 | 中国计算机学会、中国科学院计算技术研究所 | http://crad.ict.ac.cn/ |
中国密码学会CACR推荐
地址:https://www.cacrnet.org.cn/site/content/96.html
期刊
会议
中国计算机学会CCF推荐
地址:https://www.ccf.org.cn/Academic_Evaluation/NIS/
期刊
会议
DES
DES 的英文全称是 Data Encryption Standard,意思是数据加密标准,DES是一个分组加密算法,加密和解密用的是同一个算法。
典型的 DES 以
64
位为分组对数据加密密钥长
64
位,但实际上只有56
位参与 DES 运算- 第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1
分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组
![]() |
---|
![]() |
DES 算法的步骤,包括 IP置换
、密钥置换
、E扩展
、S盒代替
、P盒置换
和末置换
IP置换
IP置换:将输入的 64 位数据块按位重新组合,并把输出分为 L0、R0 两部分,每部分长度为 32 位。
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
---|---|---|---|---|---|---|---|
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
表中的数字代表新数据中此位置的数据在原数据中的位置,即原数据块的第58位放到新数据的第1位,第50位放到第2位,……依此类推,第7位放到第64位。置换后的数据分为 L0 和 R0 两部分,L0 为新数据的左32位,R0为新数据的右32位。
注意:位数是从左边开始数的,最左边的位为1,最右边的位为 64。
例子🌰
密钥置换
不考虑每个字节的第8位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。产生的56位密钥由下表生成(注意表中没有8,16,24,32,40,48,56,64这8位):
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 58 | 50 | 42 | 34 | 26 | 18 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 2 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 | 60 | 52 | 44 | 36 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 | 30 | 22 |
14 | 6 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
在DES的每一轮中,从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下:
1).将56位的密钥分成两部分,每部分28位。
2).根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:
轮数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
位数 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
移动后,从56位中选出48位。这个过程中,既置换了每位的顺序,又选择了子密钥,因此称为压缩置换。压缩置换规则如下表(注意表中没有9,18,22,25,35,38,43,54这8位):
14 | 17 | 11 | 24 | 1 | 5 | 3 | 28 | 15 | 6 | 21 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
23 | 19 | 12 | 4 | 26 | 8 | 16 | 7 | 27 | 20 | 13 | 2 |
41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 | 51 | 45 | 33 | 48 |
44 | 49 | 39 | 56 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
置换方法同上,此处省略。
E扩展
E扩展置换: 将 IP 置换后获得的右半部分 R0(32位)扩展为 48位 (6位×8组),达到与密钥相同长度的数据以进行异或运算;提供更长的结果,在后续的替代运算中可以进行压缩。
32 |
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
4 |
5 | 6 | 7 | 8 | 9 |
8 |
9 | 10 | 11 | 12 | 13 |
12 |
13 | 14 | 15 | 16 | 17 |
16 |
17 | 18 | 19 | 20 | 21 |
20 |
21 | 22 | 23 | 24 | 25 |
24 |
25 | 26 | 27 | 28 | 29 |
28 |
29 | 30 | 31 | 32 | 1 |
表中的数字代表位,两列橙色数据是扩展的数据,可以看出,扩展的数据是从相邻两组分别取靠近的一位,4位变为6位。靠近32位的位为1,靠近1位的位为32。表中第二行的4取自上组中的末位,9取自下组中的首位。
扩展置换之后,右半部分数据R0变为 48 位,与密钥置换得到的轮密钥进行异或。
例子🌰
S盒
压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送人S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。
S盒1
14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
S盒2
15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 |
0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 |
13 | 8 | 10 | 1 | 3 | 15 | 4 | 2 | 11 | 6 | 7 | 12 | 0 | 5 | 14 | 9 |
S盒3
10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 |
13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 |
1 | 10 | 13 | 0 | 6 | 9 | 8 | 7 | 4 | 15 | 14 | 3 | 11 | 5 | 2 | 12 |
S盒4
7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 19 |
10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 |
3 | 15 | 0 | 6 | 10 | 1 | 13 | 8 | 9 | 4 | 5 | 11 | 12 | 7 | 2 | 14 |
S盒5
2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 5 | 8 | 3 | 15 | 13 | 0 | 14 | 9 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 13 | 3 | 9 | 8 | 6 |
4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 |
11 | 8 | 12 | 7 | 1 | 14 | 2 | 13 | 6 | 15 | 0 | 9 | 10 | 4 | 5 | 3 |
S盒6
12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 |
9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 |
4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 |
S盒7
4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 |
1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 |
6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 |
S盒8
13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 |
7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 |
2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
P盒
S 盒输出的 32 位再经过 P 盒进行置换。
16 | 7 | 20 | 21 | 29 | 12 | 28 | 17 |
---|---|---|---|---|---|---|---|
1 | 15 | 23 | 26 | 5 | 18 | 31 | 10 |
2 | 8 | 24 | 14 | 32 | 27 | 3 | 9 |
19 | 13 | 30 | 6 | 22 | 11 | 4 | 25 |
表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第16位放到新数据的第1位,第7位放到第2位,……依此类推,第25位放到第32位。
IP-1置换
IP-1 置换是 IP 置换的逆过程,DES 最后一轮后,左、右两半部分并未进行交换,而是两部分合并形成一个分组做为末置换的输入。末置换规则如下表:
40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 |
---|---|---|---|---|---|---|---|
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 |
35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
参考
原创]密码学基础:DES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com
DES加密算法|密码学|信息安全 - 哔哩哔哩 (bilibili.com)
DES加密算法|密码学|信息安全_哔哩哔哩_bilibili
DES算法详解 - songoo - 博客园 (cnblogs.com)
DES加密算法解析与实现 - luogi - 博客园 (cnblogs.com)
赞助💰
如果你觉得对你有帮助,你可以请我喝一杯冰可乐!嘻嘻🤭
支付宝支付 | 微信支付 |
![]() |
![]() |