當前位置:編程學習大全網 - 源碼下載 - 請說說des算法中子密鑰是怎麽得到的

請說說des算法中子密鑰是怎麽得到的

轉載整個DES算法太繁瑣了,我只是挑選其中子密鑰的生成這個知識點來寫

了解相關專業名詞:

1. 移位和循環移位:

移位就是將壹段數碼按照規定的位數整體性地左移或右移。循環右移就是當右移時,把數碼的最後的位移到數碼的最前頭,循環左移正相反。例如,對十進制數碼12345678循環右移1位(十進制位)的結果為81234567,而循環左移1位的結果則為23456781。

當時自己在這裏栽過很大的跟頭,這裏的循環移位,指的是前後28位密碼的位置循環左移,比如

49 42 35 28 21 14 7 42 35 28 21 14 7 0

0 50 43 36 29 22 15 循環左移壹位 50 43 36 29 22 15 8

8 1 51 44 37 30 23 ————————> 1 51 44 37 30 23 16

16 9 2 52 45 38 31 9 2 52 45 38 31 49

2. 置換:

就是將數碼中的某壹位的值根據置換表的規定,用另壹位代替。它不像移位操作那樣整齊有序,看上去雜亂無章。這正是加密所需,被經常應用。

DES密鑰擴展算法:

for each round i = 1,2,3....n

LK = cyclically left shift LK by ri bits

RK = cyclically left shift RK by ri bits

The left half of subkey Ki consists of bits of LP of LK

The right half of subkey Ki consits of bits of RP of RK

next i

具體的操作:

特別註意:這裏講的數字都是指密鑰的具體位置,而不是密鑰的內容

1. 我們將DES的56位密鑰從左到右從0開始編號。首先擴展DES密鑰的前28位,並進行置換,結果稱為LK,DES密鑰的LK是原始密鑰的下列各位:

49 42 35 28 21 14 7

0 50 43 36 29 22 15

8 1 51 44 37 30 23

16 9 2 52 45 38 31

通俗講,就是說第壹位前面的28位密鑰中,第壹位放的元素就是原先56中的第49位,第二位就是原先的42位

2. 類似的,DES密鑰的剩余28位稱為RK,由原始密鑰的下列各位構成

55 48 41 34 27 20 13

6 54 47 40 33 26 19

12 5 53 46 39 32 25

18 11 4 24 17 10 3

3. 在進行密鑰擴張算法之前,還需要定義LP置換:

13 16 10 23 0 4 2 27 14 5 20 9

22 18 11 3 25 7 15 6 26 19 12 1

這也是我剛開始百思不得其解的地方,其實也很簡單,就是將經過移位之後的左邊的28位密鑰重現編號,再按下標放好

缺少8,17,21,24

4.RP置換

12 23 2 8 18 26 1 11 22 16 4 19

15 20 10 27 5 24 17 13 21 7 0 3

缺少了6,9,14,25

  • 上一篇:《小叮當-永無獸傳奇》
  • 下一篇:妳有給自己定過KPI(關鍵績效指標)嗎?
  • copyright 2024編程學習大全網