傳統密碼:
1、單表替換密碼 *(密碼移位固定)
2、多表替換密碼 *(密鑰移位周期固定)其中維吉尼亞密碼的出現引出了“秘鑰”的概念
3、多字母代換密碼 *(明文分組交換){1、DES 2、AES}
DES加密過程:(DES算法明文分組長度為64 bit,密鑰長度也為64 bit,但是實際密鑰長度只有56位,其中第8、16、24、32、40、48、56、64位是奇偶校驗位,用於檢查密鑰在產生、分配及存儲過程中可能發生的錯誤。)
一、明文ip變換
1、明文根據ip置換表重新得到新的明文(所謂ip置換表就是將明文的數字按照ip表中的位置重新定位),得到一個亂序的64 bit 明文組
2、將新得到的加密明文分成兩個部分,Lo和Ro。
二、子密鑰生成
在DES中,加密者輸入的明文和密鑰都是64 bit,其中只有56 bit是有用的位數(因為有8位為奇偶校驗位)。但是DES加密過程有16輪循環函數,其中需要用到16個密鑰,所以要將這56 bit密鑰擴展生成16個48 bit 的子密鑰。步驟如下:
1、PC_1置換的主要步驟和初始IP置換一樣,PC_1置換的目的是為了去掉64 bit密鑰k中的8個奇偶校驗位,並對其余56位打亂排列。置換完成后,同樣將密鑰分成左右兩部分各28 bit,左邊為C0, 右邊為D0。
2、對於1<=n<=16,在第n輪分別對Cn-1和Dn-1進行循環左移,所移的位數為1位或者2位,取決於n的值,當n=1,2,9,16時左移1位,其它左移2位。因此表格如下:(此時還是56位)
(如Co左移為:1111000011001100101010101111——1110000110011001010101011111)
3. 得到16個子密鑰K
Kn = PC_2(CnDn),PC_2為固定置換,用於從 CnDn(56位) 中選取48 bit作為子密鑰Kn,CnDn 表示從左到右將 Dn 排在 Cn 的后面,CnDn 的長度為56 bit。
至此,子密鑰全部生成(48位),進入輪函數(輪函數中,首先將32位的一半重定位明文通過E變換轉化為48位,如下圖所示)。、
4、S盒代換
將 E(A) 和 K 進行異或(如果a、b兩個值不相同,則異或結果為1。. 如果a、b兩個值相同,異或結果為0)操作后,把比特串分為8組,一組 6 bit,分別對每一組進行S盒代換。經過S盒,每一組由 6 bit 縮減為 4 bit。
S盒的行號從0到3,列號從0到15。
代換的過程如下,例如需要代換的第一組數據輸入為011001,則第一位0和最后一位1組合成的01即為行號,中間的1101為列號,第一組數據對應S1,01轉化成10進制為1,1101轉化成10進制為13,因此S1中的第1行第13列就為對應的輸出,查表得5,轉化成2進制為0101。因此0101就為最終的4位輸出。
5、P盒代換
P為固定置換,將經過S盒變換得到的32 bit進行一個置換操作。至此,得到F函數的最終輸出。
6、迭代16次
7、p的逆置換
————————————————
版權聲明:本文為CSDN博主「pear粥小鯉」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_44143499/article/details/105821846