DES子密钥计算具体步骤

DES子密钥计算步骤?

1.输入原密钥 例如:K=12345679ABCDEF
2.输出他的二进制K=0001 0010 …
3.根据给出的换位表
例如(7位*8=56位)置换表1
(57 49 41 33 25 17 9)


注意(每八位是一个奇数偶数校验位,不参与运算)
例如第一位是输入密钥第57位上的数据,第二位是第49位上的数据,以此类推。
4.可以得到56位的新密钥
K+=1111000 0110011 …
5.将其分成左右两部分,分别是28位,
C0=。。。
D0=。。。
6.对于C0,D0进行移位操作,移位顺序分别是
1,1,2,2,
2,2,2,2,
1,2,2,2,
2,2,2,1.
具体来说,对于n=1,2,3,。。。,16,在前一轮移位的结果上,进行左移操作。什么叫左移?左移指的是将除第一位外的所有为往左移一位,将第一位移动至最后一位。
比如,C3和D3是C2和D2移位而来的。
具体来说,通过2次左移位,C16和D16则是由C15和D15通过1次左移得到的。在所有情况下,一次左移就是将所有比特往左移动一位。使的一位后的比特的位置相较于变换前成为2,3,4,,,28,1.
7.比如,对于原始子密钥C0和D0 (注意:记住循环移位的规律。1122 2222 1222 2221)得到:
C0 = 1111000011001100101010101111
C1 = 1110000110011001010101011111
C2 = 1100001100110010101010111111
C3 = 0000110011001010101011111111
C4 = 0011001100101010101111111100
C5 = 1100110010101010111111110000
C6 = 0011001010101011111111000011
C7 = 1100101010101111111100001100
C8 = 0010101010111111110000110011
C9 = 0101010101111111100001100110
C10 = 0101010111111110000110011001
C11 = 0101011111111000011001100101
C12 = 0101111111100001100110010101
C13 = 0111111110000110011001010101
C14 = 1111111000011001100101010101
C15 = 1111100001100110010101010111
C16 = 1111000011001100101010101111
D0 = 0101010101100110011110001111
D1 = 1010101011001100111100011110
D2 = 0101010110011001111000111101
D3 = 0101011001100111100011110101
D4 = 0101100110011110001111010101
D5 = 0110011001111000111101010101
D6 = 1001100111100011110101010101
D7 = 0110011110001111010101010110
D8 = 1001111000111101010101011001
D9 = 0011110001111010101010110011
D10 = 1111000111101010101011001100
D11 = 1100011110101010101100110011
D12 = 0001111010101010110011001111
D13 = 0111101010101011001100111100
D14 = 1110101010101100110011110001
D15 = 1010101010110011001111000111
D16 = 0101010101100110011110001111
8.而后合成CnDn,根据置换表2,可以计算输出所有子密钥
如下:
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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是陈Eason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值