天天看點

密碼學基礎(一):詳解DESDES:Data Encryption Standard

DES:Data Encryption Standard

DES即是資料加密标準。DES設計的目的是用于加密靜态存儲和傳輸信道中的資料,安全使用10-15年(留下疑問:為什麼密碼算法會有年限設定?)

DES的特點:

(1)DES是分組密碼,綜合使用了置換,代替,代數等多種密碼技術,設計充分展現了商農所闡述的設計密碼的思想。

(2)明文、密文、密鑰的分組長度都是64位

(3)DES是對合運算,加密和解密共用同一算法

在數學中,對合函數是指函數 f(x) 滿足 f(f(x))=x。

(4)面向二進制,能夠加解密任何形式的計算機資料。

(5)密碼結構屬于Feistel結構。Feistel結構是什麼?

DES的加密過程

分組的意思,以64位為一組:輸入64位一組的明文,輸出64位一組的密文。

分組密碼就是一次加解密都是以組為機關。

DES的密鑰雖然為64位,但有8位作為奇偶校驗位,故密鑰實為56位。

對明文的處理:

輸入64位明文,

初始置換IP(Initial Permutation):将資料打亂并重新排列,分為左右兩部分,左邊32位作為L0,右邊32位位R0。

有初始置換矩陣。

對密鑰的處理:

三個流程:置換選擇1,循環左移,置換選擇2

輸入64位密鑰,得到16個48位長的子密鑰

置換選擇1:

64位密鑰首先進行置換選擇1,其作用一是從64位密鑰中取出8個奇偶校驗位;

(64位的密鑰每個位元組的最高位是奇偶校驗位。)

二是把其餘56位密鑰位打亂重排,前28位為C0,後28位為D0。

同樣都有置換矩陣。

Ci Di循環左移和置換選擇疊代16次

循環左移:

C0 D0循環左移,有相應的循環左移位數,有的為1,有的為2.為什麼?

循環左移位數表:

置換選擇2:

Ci Di合并成一個56位的中間資料,置換選擇就是從中選出一個48位的子密鑰Ki。

同樣有置換選擇矩陣。

密鑰與明文的操作

前面已經講了對明文和密鑰的處理

下面說明分析明文與密鑰是如何進行加密的:

加密函數:

R1=L0和f(R0,K1)異或得到。

每次R傳給下一個疊代的L

如此重複16次,最後你初始置換IP-1

輸出64位密文

加密函數f

32位輸入 選擇運算E 48位中間結果和48位子密鑰Ki模2相加

S盒6進4出 輸出f作用後的結果

代碼設計

函數

為什麼會用到0xff?

名詞解釋

  1. 分組密碼(block cipher)的數學模型是将明文消息編碼表示後的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分别在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。
  2. 對稱加密是加密和解密共用一個密鑰的意思,DES加密解密運用同一算法,不過子密鑰使用的順序不同。
  3. Feistel結構:

繼續閱讀