分組加密的基礎
大多數分組密碼結構本質上都是基於feistel網絡結構,所以,瞭解feistel密碼結構對於學期其餘加密算法是有幫助的。算法
加密的過程
在feistel網絡中,加密的各個步驟成爲輪(Round),整個加密的過程就是進行若干次輪的循環。下圖是一輪的計算流程。安全
一輪的具體計算步驟以下:網絡
- 將輸入的數據等分爲左右兩部分;
- 將輸入的右側直接發送到輸出的右側;
- 將輸入的右側發送到輪函數;
- 輪函數根據右側數據和子密鑰,計算出一串看上去是隨機的比特序列;
- 將上一步獲得的比特序列與左側數據進行XOR運算,並將結果做爲加密後的左側。
那麼整個feistel的構造過程,以下左所示函數
若是用公式描述,能夠這樣加密
- 講明文分紅兩部分(L0, R0)
- 每一輪進行以下操做: Li+1 = Ri Ri+1 = Li⊕F(Ki, Ri)
影響因素
- 塊的大小:(Li+Ri)大的塊會提升安全性,可是會下降加解密的速度,一般塊大小使用64和128bit
- 密鑰的大小
- 子密鑰的生成算法
- 輪函數F的複雜度
- 循環次數
那麼不一樣的算法,也就是上面影響因素設置的不一樣,固然這只是基礎原理,後面會結合某一具體算法來講明。圖片
參考:《圖解密碼計算》it