📄 des全过程.txt
字号:
Plain ASCII String:ABCDEFGH
Plain Bit String:
4142 4344 4546 4748
Key ASCII String:12345678
Key Bit String:
3132 3334 3536 3738
用户输入的64位密钥如下:
二进制 十六进制
0 1 2 3 4 5 6 7
0 0 1 1 0 0 0 1 0X31
0 0 1 1 0 0 1 0 0X32
0 0 1 1 0 0 1 1 0X33
0 0 1 1 0 1 0 0 0X34
0 0 1 1 0 1 0 1 0X35
0 0 1 1 0 1 1 0 0X36
0 0 1 1 0 1 1 1 0X37
0 0 1 1 1 0 0 0 0X38
56 57 58 59 60 61 62 63
/******************步骤1:子密钥处理开始**************************/
步骤1-1:去奇偶校验位(每个字节最左边的位),而后重排56位:
L 28位:
57 49 41 33 25 17 09 | 01 58 50 42 34 26 18 | 10 02 59 51 43 35 27 | 19 11 03 60 52 44 36 |
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
R 28位:
63 55 47 39 31 23 15 | 07 62 54 46 38 30 22 | 14 06 61 53 45 37 29 | 21 13 05 28 20 12 04 |
0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0
/******************步骤1-2:生成子密钥**************************/
步骤1-2-0-1:第0轮循环左移,左移1位后:
左28位:
0000000 1111111 1111111 1110000
右28位:
1010101 0110011 0011110 0000000
步骤1-2-0-2:第0轮循环左移,累计左移1位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000000 1111111 1111111 1110000 1010101 0110011 0011110 0000000
步骤1-2-0-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-0-3:第0轮循环左移累计1位,压缩置换后得到子钥K0:
111100 001011 111001 100110 101110 000111 000000 110010
步骤1-2-1-1:第1轮循环左移累计2位,在前基础上再左移1位后:
左28位:
0000001 1111111 1111111 1100000
右28位:
0101010 1100110 0111100 0000001
步骤1-2-1-2:第1轮循环左移,累计左移2位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000001 1111111 1111111 1100000 0101010 1100110 0111100 0000001
步骤1-2-1-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-1-3:第1轮循环左移累计2位,压缩置换后得到子钥K1:
111000 001011 111001 110110 100110 110100 100110 100101
步骤1-2-2-1:第2轮循环左移累计4位,在前基础上再左移2位后:
左28位:
0000111 1111111 1111111 0000000
右28位:
0101011 0011001 1110000 0000101
步骤1-2-2-2:第2轮循环左移,累计左移4位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000111 1111111 1111111 0000000 0101011 0011001 1110000 0000101
步骤1-2-2-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-2-3:第2轮循环左移累计4位,压缩置换后得到子钥K2:
111001 001111 011001 110110 000000 100100 101110 010001
步骤1-2-3-1:第3轮循环左移累计6位,在前基础上再左移2位后:
左28位:
0011111 1111111 1111100 0000000
右28位:
0101100 1100111 1000000 0010101
步骤1-2-3-2:第3轮循环左移,累计左移6位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0011111 1111111 1111100 0000000 0101100 1100111 1000000 0010101
步骤1-2-3-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-3-3:第3轮循环左移累计6位,压缩置换后得到子钥K3:
111001 101101 011101 110010 110100 110010 000100 010101
步骤1-2-4-1:第4轮循环左移累计8位,在前基础上再左移2位后:
左28位:
1111111 1111111 1110000 0000000
右28位:
0110011 0011110 0000000 1010101
步骤1-2-4-2:第4轮循环左移,累计左移8位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1111111 1110000 0000000 0110011 0011110 0000000 1010101
步骤1-2-4-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-4-3:第4轮循环左移累计8位,压缩置换后得到子钥K4:
111011 101101 001101 110011 111000 110000 001110 001000
步骤1-2-5-1:第5轮循环左移累计10位,在前基础上再左移2位后:
左28位:
1111111 1111111 1000000 0000011
右28位:
1001100 1111000 0000010 1010101
步骤1-2-5-2:第5轮循环左移,累计左移10位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1111111 1000000 0000011 1001100 1111000 0000010 1010101
步骤1-2-5-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-5-3:第5轮循环左移累计10位,压缩置换后得到子钥K5:
101011 111101 001101 011011 010100 000011 001100 001111
步骤1-2-6-1:第6轮循环左移累计12位,在前基础上再左移2位后:
左28位:
1111111 1111110 0000000 0001111
右28位:
0110011 1100000 0001010 1010110
步骤1-2-6-2:第6轮循环左移,累计左移12位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1111110 0000000 0001111 0110011 1100000 0001010 1010110
步骤1-2-6-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-6-3:第6轮循环左移累计12位,压缩置换后得到子钥K6:
001011 110101 001111 011011 011101 100001 000010 101100
步骤1-2-7-1:第7轮循环左移累计14位,在前基础上再左移2位后:
左28位:
1111111 1111000 0000000 0111111
右28位:
1001111 0000000 0101010 1011001
步骤1-2-7-2:第7轮循环左移,累计左移14位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1111000 0000000 0111111 1001111 0000000 0101010 1011001
步骤1-2-7-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-7-3:第7轮循环左移累计14位,压缩置换后得到子钥K7:
001111 110101 100111 011001 010000 000011 100111 101011
步骤1-2-8-1:第8轮循环左移累计15位,在前基础上再左移1位后:
左28位:
1111111 1110000 0000000 1111111
右28位:
0011110 0000000 1010101 0110011
步骤1-2-8-2:第8轮循环左移,累计左移15位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1110000 0000000 1111111 0011110 0000000 1010101 0110011
步骤1-2-8-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-8-3:第8轮循环左移累计15位,压缩置换后得到子钥K8:
000111 110101 100111 011001 011011 001110 010110 000001
步骤1-2-9-1:第9轮循环左移累计17位,在前基础上再左移2位后:
左28位:
1111111 1000000 0000011 1111111
右28位:
1111000 0000010 1010101 1001100
步骤1-2-9-2:第9轮循环左移,累计左移17位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111111 1000000 0000011 1111111 1111000 0000010 1010101 1001100
步骤1-2-9-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-9-3:第9轮循环左移累计17位,压缩置换后得到子钥K9:
000111 110110 100111 011101 101010 100100 010001 001011
步骤1-2-10-1:第10轮循环左移累计19位,在前基础上再左移2位后:
左28位:
1111110 0000000 0001111 1111111
右28位:
1100000 0001010 1010110 0110011
步骤1-2-10-2:第10轮循环左移,累计左移19位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111110 0000000 0001111 1111111 1100000 0001010 1010110 0110011
步骤1-2-10-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-10-3:第10轮循环左移累计19位,压缩置换后得到子钥K10:
000111 110110 110110 001101 110011 101101 001100 000010
步骤1-2-11-1:第11轮循环左移累计21位,在前基础上再左移2位后:
左28位:
1111000 0000000 0111111 1111111
右28位:
0000000 0101010 1011001 1001111
步骤1-2-11-2:第11轮循环左移,累计左移21位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1111000 0000000 0111111 1111111 0000000 0101010 1011001 1001111
步骤1-2-11-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-11-3:第11轮循环左移累计21位,压缩置换后得到子钥K11:
010110 110010 110110 101101 100101 000100 011101 101000
步骤1-2-12-1:第12轮循环左移累计23位,在前基础上再左移2位后:
左28位:
1100000 0000001 1111111 1111111
右28位:
0000001 0101010 1100110 0111100
步骤1-2-12-2:第12轮循环左移,累计左移23位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
1100000 0000001 1111111 1111111 0000001 0101010 1100110 0111100
步骤1-2-12-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-12-3:第12轮循环左移累计23位,压缩置换后得到子钥K12:
110110 011010 110010 101101 110110 001001 101001 000000
步骤1-2-13-1:第13轮循环左移累计25位,在前基础上再左移2位后:
左28位:
0000000 0000111 1111111 1111111
右28位:
0000101 0101011 0011001 1110000
步骤1-2-13-2:第13轮循环左移,累计左移25位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000000 0000111 1111111 1111111 0000101 0101011 0011001 1110000
步骤1-2-13-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-13-3:第13轮循环左移累计25位,压缩置换后得到子钥K13:
110100 011010 111010 101110 110100 001110 011000 111000
步骤1-2-14-1:第14轮循环左移累计27位,在前基础上再左移2位后:
左28位:
0000000 0011111 1111111 1111100
右28位:
0010101 0101100 1100111 1000000
步骤1-2-14-2:第14轮循环左移,累计左移27位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000000 0011111 1111111 1111100 0010101 0101100 1100111 1000000
步骤1-2-14-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-14-3:第14轮循环左移累计27位,压缩置换后得到子钥K14:
111100 001011 111010 100110 001110 010011 111000 001000
步骤1-2-15-1:第15轮循环左移累计28位,在前基础上再左移1位后:
左28位:
0000000 0111111 1111111 1111000
右28位:
0101010 1011001 1001111 0000000
步骤1-2-15-2:第15轮循环左移,累计左移28位后左右合并得:
1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567
0000000 0111111 1111111 1111000 0101010 1011001 1001111 0000000
步骤1-2-15-3:照以下数组进行选位并排序:
14,17,11,24,01,05,|03,28,15,06,21,10,|23,19,12,04,26,08,|16,07,27,20,13,02,|
41,52,31,37,47,55,|30,40,51,45,33,48,|44,49,39,56,34,53,|46,42,50,36,29,32,|
步骤1-2-15-3:第15轮循环左移累计28位,压缩置换后得到子钥K15:
111100 001011 111000 100110 000010 100001 011010 110101
/******************步骤1结束**************************/
/加密步骤2:数据处理开始**************************/
待加密的64bit数据:
01 02 03 04 05 06 07 08 | 09 10 11 12 13 14 15 16 | 17 18 19 20 21 22 23 24 | 25 26 27 28 29 30 31 32 |
0 1 0 0 0 0 0 1 | 0 1 0 0 0 0 1 0 | 0 1 0 0 0 0 1 1 | 0 1 0 0 0 1 0 0 |
33 34 35 36 37 38 39 40 | 41 42 43 44 45 46 47 48 | 49 50 51 52 53 54 55 56 | 57 58 59 60 61 62 63 64 |
0 1 0 0 0 1 0 1 | 0 1 0 0 0 1 1 0 | 0 1 0 0 0 1 1 1 | 0 1 0 0 1 0 0 0 |
加密步骤2-1:64bit初始排列后:
58 50 42 34 26 18 10 02 | 60 52 44 36 28 20 12 04 | 62 54 46 38 30 22 14 06 | 64 56 48 40 32 24 16 08 |
1 1 1 1 1 1 1 1 | 0 0 0 0 0 0 0 0 | 0 1 1 1 1 0 0 0 | 0 1 0 1 0 1 0 1 |
57 49 41 33 25 17 09 01 | 59 51 43 35 27 19 11 03 | 61 53 45 37 29 21 13 05 | 63 55 47 39 31 23 15 07 |
0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 1 0 0 0 0 0 0 0 | 0 1 1 0 0 1 1 0 |
加密步骤2-2:F处理***************************
加密步骤2-2-0:第0轮处理开始***************************
加密步骤F处理-A右半扩展:Right Half (循环右移花接1位后)扩展后r的48位明文:
0000 00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -