加密模式全解析
兩大類的加密:塊加密和流加密,以及塊加密的5種常見加密模式和2種衍生加密模式的簡單介紹。
加密算法基本分為兩類:塊加密和流加密。
流加密
使用密鑰產生出一個偽隨機的位流(特點:周期極長,可以重現),這個偽隨機的數據流和明文數據流進行XOR的結果作為密文數據流。
塊加密
將數據分成同樣大小的多個塊,每次對一個塊進行加密,因此有時需要補位等預處理。
塊加密有5種加密模式:
1)ECB(電子密碼本模式)
將明文數據分成若干塊,每塊的大小跟加密密鑰長度相同,然后每塊都用相同的密鑰進行加密。
2)CBC(密碼分組鏈接模式)
同樣也要將將明文數據分成若干塊,使用初始向量與明文塊做XOR得到的結果塊使用密鑰進行加密,得到密文塊。密文塊又作為下一個明文塊XOR的向量使用。
PCBC是一種改進模式,新的向量由密文塊和明文塊XOR產生。
3)CFB(密碼反饋模式)
在尺寸為一個塊大小的寄存器里保存有初始向量,密鑰加密寄存塊之后取結果塊的最左側字節與明文第一個字節XOR,結果作為密文的第一個字節,隨后寄存器原數據左移一字節,將該字節壓入寄存器最右側,進行下一字節的加密。
4)OFB(輸出反饋模式)
過程和CFB很類似,只是壓入寄存器最右側的字節是加密結果塊的最左側字節。
可以看到,明文和密文只在最后才采用了加密和解密,而寄存器的數據變化與明文和密文無關,這實質上是用塊加密法來產生流加密的偽隨機數據流的方法。
OFB的一個變體,是采用明文全為0的CBC算法來生成偽隨機數據流:
5)CTR(計算器模式)
這種模式也是用塊加密來實現流加密的一種方法。最簡單的情況,初始向量和一個遞增的計數器拼為一個塊,該塊經加密作為偽隨機數據流的一個塊的數據,計數器有規律的改變其值并和初始向量拼接為下一個用于加密生成偽隨機數據流的塊。如下:
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!