前言:之前很少接觸加解相關的東西,最近準備系統(tǒng)的學習下,所有就有了這篇文章,也希望看到的大佬不吝賜教!感激不盡!
一些小的知識點:
- 對稱密碼與公鑰密碼(非對稱加密)
- 對稱密碼(symmetric cryptography)是指在加密和解密時使用同一密鑰的方式。
- 公鑰密碼(public-key cryptography)則是指在加密和解密時使用不同密鑰的方式。因此公鑰密碼又稱為非對稱密碼(asymmetric cryptography)。
2.DES(Data Encryption Standard)
DES是一種將64bit的明文加密成64bit的密文的對稱密碼算法,它的密鑰長度是56bit。盡管從規(guī)格上來說,DES的密鑰長度是64bit,但由于每隔7bit會設置一個用于錯誤檢查的bit,因此實質(zhì)上其密鑰長度是56bit。
DES是以64bit的明文(bit序列)為一個單位來進行加密的,這個64bit的單位稱為分組。一般來說,以分組為單位進行處理的密碼算法稱為分組密碼(block cipher),DES就是分組密碼的一種。
DES每次只能加密64bit的數(shù)據(jù),如果要加密的明文比較長,就需要對DES加密進行迭代(反復),而迭代的具體方式就稱為模式(mode)。
- AES(Advanced Encryption Standard)是取代其前任標志(DES)而成為新標準的一種對稱密碼算法。全世界的企業(yè)和密碼學家提交了多個對稱密碼算法作為AES的候選,最終在2000年從這些候選算法中選出了一種名為Rijndael的對稱密碼算法,并將其確定為了AES。
- 三重DES的加密
三重DES的加密機制如圖

明文經(jīng)過三次DES處理才能變成最后的密文,由于DES密鑰的長度實質(zhì)上是56bit,因此三重DES的密鑰長度就是56 * 3 = 168bit。
從圖中我們可以發(fā)現(xiàn),三重DES并不是進行三次DES加密(加密->加密->加密),而是加密->解密->加密的過程。在加密算法中加入解密操作讓人感覺很不可思議,實際上這個方法是IBM公司設計出來的,目的是為了讓三重DES能夠兼容普通的DES。
- AES(Advanced Encryption Standard)
AES是取代其前任標準(DES)而成為新標準的一種對稱密碼算法。全世界的企業(yè)和密碼學家提交了多個對稱密碼算法作為AES的候選,最終在2000年從這些候選算法中選出了一種名為Rijndael的對稱密碼算法,并將其確定為了AES。
- 什么是Rijndael
Rijndael是由比利時密碼學家Joan Daemen 和 Vincent Rijmen 設計的分組密碼算法,于2000年被選為新一代的標準密碼算法——AES。
Rijndael的分組長度為128bit,密鑰長度可以以32bit為單位在128bit到256bit的范圍內(nèi)進行選擇(不過在AES的規(guī)格中,密鑰長度只有128、192和256bit三種)。
- 分組密碼的模式
模式有很多種類,分組密碼的主要模式有以下5種:
-
ECB模式:Electronic CodeBook mode(電子密碼本模式)
在ECB模式中,將明文分組加密之后的結(jié)果直接轉(zhuǎn)成為密文分組。
使用ECB模式加密時,相同的明文分組會被轉(zhuǎn)換為相同的密文分組,也就是說,我們可以將其理解為是一個巨大的“明文分組->密文分組”的對應表,因此ECB模式也稱為電子密碼模式。
當最后一個明文分組的內(nèi)容小于分組長度時,需要用一些特定的數(shù)據(jù)進行填充(padding)。ECB模式的特點是所有模式中最簡單的一種。ECB模式中,明文分組與密文分組是一一對應的關系,因此,如果明文中存在多個相同的明文分組,則這些明文分組最終都將被轉(zhuǎn)換為相同的密文分組。這樣一來,只要觀察一下密文,就可以知道明文中存在怎樣的重復組合,并可以以此為線索來破譯密碼,因此ECB模式是存在一定風險的。
CBC模式:Cipher Block Chaining mode(密碼分組鏈接模式)
CFB模式:Cipher FeedBack mode(密文反饋模式)
OFB模式:Output FeedBack mode(輸出反饋模式)
CTR模式:CounteR mode(計數(shù)器模式)
- 明文分組與密文分組
明文分組是指分組密碼算法中作為加密對象的明文。明文分組的長度與分組密碼算法的分組長度是相等的。
密文分組是指使用分組密碼算法將明文分組加密之后所生成的密文。