1. 程式人生 > >密碼學指DES密碼

密碼學指DES密碼

DES密碼是比較重要的對稱加密演算法,使用了移位、分組、置換等多種加密方法。

DES加密過程

S={P,C,K,E,D},其中明文P,密文C是64bit的資料,金鑰K是56bit的資料

在這裡插入圖片描述
1.明文首先經過一次置換(IP),置換後還是64bit。
2.將置換後的明文分為兩部分:L,R,分別的32bit。然後與k作用,經過16圈的迭代。此時的k1…k16經過去除奇偶校驗位等後變成48bit。其通用公式為:
在這裡插入圖片描述
3.16此迭代完成後將L與R(32bit)兩部分連線起來,進行一次置換的逆運算,即可得到最終的密文(64bit)。

不知道大家看到這有沒有什麼疑問,48bit的金鑰k是怎麼和32bit的R作用的?

因為R為32bit,k為48bit,位數不同,無法直接作用,所以要先將R補位為48bit。具體怎麼補位,IBM公司(DES演算法的發明者)設計了特定的補位方法,這裡不做詳細介紹了。
既然R變成了48bit,那麼f(R,K)也變成了48bit,而L為32bit,位數不同不能異或。倘若再對L進行補位的話,那麼得到的新的R將會是48bit的,這和我們的期望不同,我們想要得到32bit的新的R,那應該怎麼辦呢?IBM公司研究出一個S1盒能夠使48bit的數轉化為32bit。
在這裡插入圖片描述
s1盒(四行十六列,表格裡面的數為0-15的數):
s1盒
s1盒的輸入是六位數,輸出為四位數。
例(計算題):s盒輸入為:011011,求輸出。
行數:x1x6:01=1
列數:x2x3x4x5:1101=13
於是輸出的數應為s1盒中第一行第十三列(從零開始到十五)的數,即為5,所以輸出應為0101(寫為四位數)

金鑰k的生成過程:

在這裡插入圖片描述
通過置換與左移生成k。

DES缺點

1.P,C太短,無法滿足需求
2.K太短,不安全
3.S盒的技術未公開,有些機構害怕可以被IBM公司獲取機密。