加解密一(feistel網絡)

分組加密的基礎

大多數分組密碼結構本質上都是基於feistel網絡結構,所以,瞭解feistel密碼結構對於學期其餘加密算法是有幫助的。算法

加密的過程

在feistel網絡中,加密的各個步驟成爲(Round),整個加密的過程就是進行若干次輪的循環。下圖是一輪的計算流程。安全

一輪

一輪的具體計算步驟以下:網絡

  1. 將輸入的數據等分爲左右兩部分;
  2. 將輸入的右側直接發送到輸出的右側;
  3. 將輸入的右側發送到輪函數;
  4. 輪函數根據右側數據和子密鑰,計算出一串看上去是隨機的比特序列;
  5. 將上一步獲得的比特序列與左側數據進行XOR運算,並將結果做爲加密後的左側。

那麼整個feistel的構造過程,以下左所示函數

輸入圖片說明

若是用公式描述,能夠這樣加密

  1. 講明文分紅兩部分(L0, R0)
  2. 每一輪進行以下操做: Li+1 = Ri Ri+1 = Li⊕F(Ki, Ri)

影響因素

  1. 塊的大小:(Li+Ri)大的塊會提升安全性,可是會下降加解密的速度,一般塊大小使用64和128bit
  2. 密鑰的大小
  3. 子密鑰的生成算法
  4. 輪函數F的複雜度
  5. 循環次數

那麼不一樣的算法,也就是上面影響因素設置的不一樣,固然這只是基礎原理,後面會結合某一具體算法來講明。圖片

參考:《圖解密碼計算》it

相關文章
相關標籤/搜索