1. 程式人生 > >S-DES加密演算法介紹與實現

S-DES加密演算法介紹與實現

為了更好地理解DES演算法,美國聖克拉拉大學的Edward Schaefer教授於1996年開發了Simplfied DES方案,簡稱S-DES方案。它是一個供教學而非安全使用的加密演算法,它與DES的特性和結構類似,但引數小,明文分組為8位,主金鑰分組為10位,採用兩輪選代。

S-DES的加密原理圖
S-DES的加密原理圖如上圖所示
S-DES的具體實現步驟:

  1. 初始置換IP:將8位的明文按照置換順序分為左4位L0和右4位R0
  2. 第1輪運算,R0一方面直接輸出作為下一輪的L1,另一方面作為f函式的輸入與8位的子金鑰K1參與函式運算,運算結果與L0異或,結果作為下一輪的R1
  3. 第2輪運算,R1一方面直接輸出作為下一輪的
    R2
    ,另一方面作為f函式的輸入與8位子金鑰K2參與函式運算,運算結構與L1異或,結果作為下一輪的L2
  4. 逆置換IP1

S-DES的子密碼生成過程
S-DES子金鑰生成過程的步驟:

  1. 主金鑰K進行P10置換(35274,10,1986)
  2. 分成左5位和右5位,再進行LS1操作(左迴圈1位),其結果一方面作為下一輪的初始值,一方面進行P8置換(637485,10,9),得到K1
  3. 將上一輪結果分佈左迴圈2位,經過P8置換,得到K2

S-DES的f函式結構
S-DES的f函式結構如上圖所示
S-DES的f函式結構的具體實現步驟:

  1. E/P擴充套件及置換: 將4位擴充套件為8位
  2. 擴充套件後的8位與金鑰
    K1
    K2異或,輸出8位
  3. 左邊4位作為S1,輸入,右邊4位作為S2輸入
  4. S1S2中,分別將第1位與第4位結合,形成2位代表S盒的行號,分別將第2位與第3位結合,形成2位代表S盒的列號,從而得到S盒的輸出。S-DES的S盒如下表所示
  5. 進行P4置換,得到f函式的輸出

S-DES的S盒

S1 00 01 10 11 S2 00 01 10 11
00 01 00 11 10 00 00 01 10 11
01 11 10 01 00 01 10 00 01 11
10 00 10 01 11 10 11 10 01 00
11 11 01 00 10 11 10 01 00 11

S-DES解密的步驟:

  1. IP置換(26314857)
  2. 如圖一逆過程從L2R2開始倒著來
  3. IP1置換(41357286)

如設主金鑰K=1010000010,用S-DES加密明文字母C

  1. 先求得K1K2,主金鑰經過P10置換的到:1000001100
  2. LS1操作:0000111000
  3. P8置換產生K1:10100100
  4. LS2操作:0010000011
  5. P8置換產生