关于DES加密的疑问
有密钥K(64位) = 133457799BBCDFF1,即K(64位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001
对K使用PC-1(8×7)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
从而,由K(64位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001
得到K+(56位) = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
进而,C0(28位) = 1111000 0110011 0010101 0101111 D0(28位) = 0101010 1011001 1001111 0001111
C1和D1分别为C0和D0左移1位。… C3和D3分别为C2和D2左移2位 …(如下向左偏移)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 (第i次)
1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 (左移位数)
从而得到C1D1 ~ C16D16:
C1 = 1110000110011001010101011111D1 = 1010101011001100111100011110
C2 = 1100001100110010101010111111D2 = 0101010110011001111000111101
C3 = 0000110011001010101011111111D3 = 0101011001100111100011110101
C4 = 0011001100101010101111111100D4 = 0101100110011110001111010101
……
C15 = 1111100001100110010101010111D15 = 1010101010110011001111000111
C16 = 1111000011001100101010101111D16 = 0101010101100110011110001111
Kn(48位) = PC-2( CnDn(56位) )
PC-2(8×6)
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
最终得到所有16个子钥,每个48位:
K1 = 000110 110000 001011 101111 111111 000111 000001 110010
K2 = 011110 011010 111011 011001 110110 111100 100111 100101
K3 = 010101 011111 110010 001010 010000 101100 111110 011001
K4 = 011100 101010 110111 010110 110110 110011 010100 011101
K5 = 011111 001110 110000 000111 111010 110101 001110 101000
K6 = 011000 111010 010100 111110 010100 000111 101100 101111
K7 = 111011 001000 010010 110111 111101 100001 100010 111100
K8 = 111101 111000 101000 111010 110000 010011 101111 111011
K9 = 111000 001101 101111 101011 111011 011110 011110 000001
K10 = 101100 011111 001101 000111 101110 100100 011001 001111
K11 = 001000 010101 111111 010011 110111 101101 001110 000110
K12 = 011101 010111 000111 110101 100101 000110 011111 101001
K13 = 100101 111100 010111 010001 111110 101011 101001 000001
K14 = 010111 110100 001110 110111 111100 101110 011100 111010
K15 = 101111 111001 000110 001101 001111 010011 111100 001010
K16 = 110010 110011 110110 001011 000011 100001 011111 110101
对明文M使用IP(8×8)
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
由于M(64位) =0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对M运用IP,故有IP(64位) = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010
IP(64位) = L0(32位) + R0(32位)
故
L0 (32位) = 1100 1100 0000 0000 1100 1100 1111 1111 R0 (32位) = 1111 0000 1010 1010 1111 0000 1010 1010
从L0和R0开始,循环16次,得出L1R1到L16R16,依据递推公式:
Ln = R(n-1) Rn = L(n-1) + f (R(n-1),Kn)
其中除了Kn为48位,其他变量及函数均为32位。
其中+号表示异或XOR运算,函数f 从一个32位的数据块R(n-1)和一个48位子钥Kn得到一个新的32位数据块。(算法从略)
到此为止,我们得到了16对32位的数据块,即L1R1, L2R2, L3R3, …, L16R16
最后一对L16R16就是我们需要的。
继续对R16L16(64位)运用一次重排列:IP-1(8×8)
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
即在L16(32位) = 0100 0011 0100 0010 0011 0010 0011 0100 R16(32位) = 0000 1010 0100 1100 1101 1001 1001 0101 R16L16(64位) = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100
时,对R16L16运用IP-1,得IP-1(64位) = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101 = 85E813540F0AB405
从而,经过以上步骤,最终从明文M = 0123456789ABCDEF得到密文C = IP-1 = 85E813540F0AB405
以上为加密过程,要解密,依次反向计算即可
上面是DES加密过程 但是红色部分有点看不懂 谁能帮我解答下。谢谢 --------------------编程问答-------------------- 就是L1=R0 R1=L0+F函数操作
L2=R1 R2=L1+F函数操作
以此类推 --------------------编程问答-------------------- 一直到处理到L16和R16
http://www.softshome.com/html/ebooks/system/200808/09-499.html
这本书关于加解密讲的很详细的 我大三的时候的教科书 --------------------编程问答--------------------
f (R(n-1),Kn) 这个函数怎么算 --------------------编程问答-------------------- Fn是具体运算的函数啊,你资料里没有运算过程吗 --------------------编程问答-------------------- 资料就是上面那样 --------------------编程问答-------------------- 先看DES算法,再看公式,最后对照着看代码; --------------------编程问答-------------------- 学习。。。。 --------------------编程问答-------------------- 那PPT 上写算法从略。。。。。我无语 --------------------编程问答-------------------- 学习。。。。。。。。。。。 --------------------编程问答-------------------- 你把我给你那本书下下来 自己看看 绝对有的 我就是对照这个自己手写C版本DES的
补充:.NET技术 , C#