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

鄭斑發表於2017-06-07

一、對稱加密演算法

對稱加密也稱為常規加密、私鑰或單鑰加密。 
一個對稱加密由5部分組成: 
- 明文(plaintext):這是原始資訊或資料,作為演算法的輸入。 
- 加密演算法(encryption algorithm):加密演算法對明文進行各種替換和轉換。 
- 金鑰(secret key):金鑰也是演算法的輸入。演算法進行的具體替換和轉換取決於金鑰。 
- 密文(ciphertext):這是產生的已被打亂的訊息輸出。 
- 解密演算法(decryption algorithm):本質上是加密演算法的反向執行。它使用密文和同一金鑰產生產生原始明文。


常用的演算法包括:

DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。

3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高。

AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;

二、資料加密標準

    資料加密標準(Data Encryption Standard, DES)於1977年被美國國家標準局(National Bureau of Standard, NBS),即現在國家標準和技術協會(National Institute of Standards and Technology,NIST)採納為聯邦46(FIPS PUB 46)。這個演算法本身指的是資料加密演算法(Data Encryption Algorithm)。DES採用了64位的分組長度和56位的金鑰長度。它將64位的經過一系列的變換得到64位的輸出,解密則使用了相同的步驟和相同的金鑰。

三、用c++程式實現DES加密和解密

下圖是DES加密演算法的整體流程圖: 
這裡寫圖片描述 
64位輸入明文先進行初始置換IP,然後進行16輪相同的函式作用,最後在進行一個逆初始置換輸出64位的密文。上圖的右半部分是金鑰的產生和使用過程,首先64位金鑰壓縮置換後變為56位,然後進行迴圈左移和置換選擇得到子金鑰和每輪的輸入。 

每輪的具體操作流程: 
這裡寫圖片描述 
每輪的變換過程可以記為下面的公式: 
這裡寫圖片描述 
明文輸入的64位,被分成兩部分L和R,R又作為下一輪迭代的L,R經過F函式的作用輸出32位的資料,再與本輪的L異或產生下一輪的R。 
下圖解釋了S盒在F函式中的使用方法: 
這裡寫圖片描述 
一共有8個S盒,每個S盒都輸入6位,輸出4位。盒Si輸入的第一位和最後一位組成一個二進位制數,用來選擇S盒4行代替值中的一行,中間4位組成的二進位制數用來選擇16列中的一列。選中的是十進位制數轉換成二進位制數後得到輸出的4位二進位制數。




相關文章