01. 对称密码——算法
密碼算法
DES
首先聲明!!!
由于DES的密文可以在短時間內被破譯,現已不再使用。
是什么?
DES(Data Encryption Standard)是1977年美國聯邦信息處理標準(FIPS)中采用的一種對稱密碼。
怎么做?(加密和解密)
DES將64 bits的明文加密成64 bits的密文。但實質上其密鑰長度為56 bits,因為每隔7個比特會設置一個檢查錯誤的比特。
由于每次只能加密64比特,所以當明文較長時,需要對加密進行迭代,迭代的方式即稱為模式。(后續提及)
DES的結構(Feistel網絡)
在Feistel網絡中,加密的各個步驟稱為輪(round),整個加密過程就是進行若干次輪的循環。DES是一種16輪循環的Feistel網絡。
Feistel網絡加密和解密具體步驟:
其中,
“輪函數”:根據RD與子密鑰生成看似隨機的比特序列,用于對LD加密。
“子密鑰”:本輪加密所使用的密鑰,每一輪都需要一個不同的子密鑰(subkey)。
注意:
最后一輪加密后,不需要對調。
使用同一子密鑰按照相反順序,即可完成解密——加密解密結構相同。
Feistel網絡中輪數可以任意增加,可以使用任意函數作為輪函數(即使不存在反函數也OK!)。
越復雜越好!反正能解!
綜上,無論任何輪數,任何輪函數,都可用相同結構加密和解密,且加密結果必定能正確解密。
三重DES
是什么?
三重DES(triple-DES)是為了增加DES的強度,重復3次所得到的一種密碼算法,縮寫3DES
怎么做?
其過程是 加密–解密–加密 ,為的是兼容普通的DES(當所有密鑰相同時)。
使用兩(三)種不同密鑰的算法,稱為DES-EDE2(3)(Encryption、Decryption)
結構
DES-EDE3加密過程現狀
處理速度不高,除了向下兼容,很少用于新的用途。
AES——高級加密標準
2000年,AES(Advanced Encryption Standard)最終被確定為Rijndael對稱密碼算法。
什么是Rijndael
Rijndael的分組長度和密鑰長度可以選擇以32比特為單位,在128到256比特的范圍。
AES規格,分組長度固定為128比特,密鑰長度只有128、192和256比特三種。
Rijndael的加密和解密
DES使用Feistel網絡,Rijndael算法使用SPN結構(Substitution-Permutation network, 代替置換網絡)。
與DES一樣,Rijndael算法也是由多個輪構成,每一輪分為SubBytes、ShiftRows、MixColumns和AddRoundKey四個步驟。
加密四個步驟
輸入分組為128比特,即16字節
其解密過程也是使用相同的結構,順序調換罷了。
在這種結構中,輸入的所有比特在一輪中都會被加密,這個Feistel網絡有所區別,使得其加密所需輪數更少,此外,加密過程還能以字節、行、列為單位并行計算。
------本文圖文參考書《圖解密碼技術》------
總結
以上是生活随笔為你收集整理的01. 对称密码——算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++(十)——模板(上)
- 下一篇: unity 的资源加载问题:一旦永久释放