簡單理解DES加密算法


數據加密標准(Data Encryption Standard,DES)是當前使用最廣泛的加密體制,對於任意的加密方案,總有兩個輸入:明文密鑰

明文是64bits,密鑰是56bits

加密過程就是初始和終結有兩次置換,中間有十六輪加密變換。

 


 

 

以下是詳細過程:

(生成子密鑰)

查看ASCLL表,將computer轉換為如下16進制表示的數:(具體不展開)

63 6f 6d 70 75 74 63 72

置換是根據置換表來的,往下會有提供。

(看不清楚點擊我)

舉個例子:PC-1置換,

(看不清楚請點擊我)

                           

 置換表PC-2 

       

 

小結:

整個過程其實就是不斷置換,中間移位一次的過程,最后會產生一個48位的子密鑰,每一輪都不一樣,每輪迭代的時候會用到,下面就會講到。

為什么每一輪會不一樣呢,因為移位的次數是根據迭代輪數變化的。

 


 

(生成密文)

第一步:初始置換

查看ASCLL表,將learning轉換為如下16進制表示的數:(具體不展開)

6C 63 61 72 6E 69 6E 67

首先要明白,這些置換表是固定的。

置換過程開始了,A表指的是 learning 16進制轉換成二進制后的結果,在每個位置標上“下標”,根據上圖的置換表,

我們可以得出B表第1行第1列對應的應該是A表的第58號,我已經標上去了,答案是1。

以此類推,B表第1行第二列------A表50號(1);B表第2行第2列-------A表52號(0)。。。。

 

第二步:十六輪迭代置換。

 

Li=Ri-1;

Ri=Li-1⊕F(Ri-1,Ki)

L和R代表的是密文的左半部分(32位),和右半部分(32位)。

第一條公式我們可以看出:第二輪的左邊等於第一輪的右邊;重點是第二條公式,右邊又等於什么呢?接下來詳細講:

過程:R0先擴展成48位,然后跟第一輪的子密鑰K1(如果不知道怎么來的,請往上翻),進行異或操作之后,放入S盒當中(相當於公式中的F函數),最后輸出32位,作為下一輪的右邊,即R1。

(看不清楚請點擊我)

補充:

1.擴展置換:中間4位不變,前后補充1位。

2.S盒的方法是這樣子的:

S盒一共包含8個盒子,跟置換表一樣,是DES固定不會變的,自行百度一下盒子的內容。所以異或之后不是有48位嗎,每8位放入一個盒子。

舉個例子,上圖S1中, 111100 前后兩位是10,說明是第2行,中間4位是1110,說明是第14列,那么你就到S1盒子的第2行第14列中找出那個數字,也就是5。

好,到這里你就完成了一次迭代,你也因此得出了第二輪的R1和L1

。。。接下來,就是漫長的16輪迭代過程。

 

第三步:終止置換

(道理就不用講了吧)

 

當然,解密過程就不多說,逆過來而已。

 

(1、本文只是舉例子加密,助於初學者理解)

(2、本文沒有提供所有的置換表)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM