簡單理解DES加密演算法

2022-09-13 10:12:10 字數 2051 閱讀 4554

資料加密標準(data encryption standard,des)是當前使用最廣泛的加密體制,對於任意的加密方案,總有兩個輸入:明文和金鑰。

明文是64bits,金鑰是56bits

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

以下是詳細過程:

(生成子金鑰)

檢視ascll表,將computer轉換為如下16進製表示的數:(具體不展開)

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

(看不清楚點選我)

舉個例子:pc-1置換,

(看不清楚我)

置換表pc-2 

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

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

(生成密文)

第一步:初始置換

檢視ascll表,將learning轉換為如下16進製表示的數:(具體不展開)

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

置換過程開始了,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盒的方法是這樣子的:

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

好,到這裡你就完成了一次迭代,你也因此得出了第二輪的r1和l1。

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

第三步:終止置換

(道理就不用講了吧)

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

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

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

DES加密演算法

命名空間 system.security.cryptography 定義訪問資料加密標準 des 演算法的加密服務提供程式 csp 版本的包裝物件。無法繼承此類。測試1加密頁面 protected void page load object sender,eventargs e response.r...

DES加密演算法

include include include include using namespace std const static char ip table 64 初始置換 const static char ipr table 64 初始逆置換表 static const char extensi...

對稱加密演算法 DES加密演算法

一 對稱加密演算法 對稱加密也稱為常規加密 私鑰或單鑰加密。乙個對稱加密由5部分組成 明文 plaintext 這是原始資訊或資料,作為演算法的輸入。加密演算法 encryption algorithm 加密演算法對明文進行各種替換和轉換。金鑰 secret key 金鑰也是演算法的輸入。演算法進行...