幾種加密算法概述


這次面試被問到密碼學,問到MD5原理,一臉懵逼,所以還是簡單整理一下學過的幾種加密類型比較妥···

DES

1. DES背景

DES(Data Encryption Standard)又叫數據加密標准,是NIST在聯邦記錄中公開征集密碼體制時出現的。DES由IBM開發,主要用於非國家保密機關。在1999年AES(Advanced Encryption Standard)作為DES的替代品開始使用。

2. DES原理

DES加密算法使用64位(bit)的數據進行加密和解密,所用的密鑰也是64位。密鑰中有8位奇偶校驗位,實際密鑰長度只有56位,產生最大64位的分組大小。這是一個迭代的分組密碼,使用稱為Feistel的技術,其中將加密的文本分為兩半,使用子密鑰對其中的一半應用循環功能,然后輸出與另一半進行“異或”運算;接着交換這兩半,這一過程會繼續下去循環16輪,但最后一個循環不交換。其中,奇偶校驗位在對數據進行加密時並不參加運算。

DES算法的入口參數有三個:Key/Data/Mode,其中:

Key 8字節共64位,是DES算法的工作密鑰,

Data 8字節共64位,是要被加密或被解密的數據,

Mode DES的工作方式,即加密或者解密。

如果Mode為解密,則用Key去把密碼形式的數據Date解密,還原為Data的明碼形式,作為DES的輸出結果。

如果Mode為加密,則用Key去把數據Data加密,生成Data的密碼形式作為DES的輸出結果。

在使用DES時,雙方預先約定使用“密碼”Key,然后用Key去加密數據,接收得到密文后使用同樣的Key解密得到原數據,其中DES每個階段使用的是不同的子密鑰和上一階段的輸出,當執行的操作相同。

RSA

1. RSA背景

RSA是目前最有影響力的公鑰加密算法,是第一個既可以用於數據加密又能用於數字簽名。RSA是一種非對稱密碼算法,能夠抵抗目前為止大多數已知的密碼的攻擊,已被ISO推薦為公鑰數據加密標准。相比DES,RSA保密性更強,但是因為RSA進行的都是大數計算,所以速度上還是DES占據優勢,且差距較大。

RSA算法基於一個簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰,在不直接傳遞密鑰的情況下,完成解密。即加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關系即可,這樣避免了直接傳遞密鑰,這種新的加密模式被稱為“非對稱加密算法”。

2. RSA原理

在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然秘密密鑰SK是由公開密鑰PK決定的,但是卻不能根據PK計算出SK。基於這種理論,RSA算法順勢而生。通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網絡服務器中注冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統加密方式與公開密鑰加密方式相結合的方式,即信息采用改進的DES或IDEA對話密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方接收到信息后,用不同的密鑰解密可核對信息摘要。

HILL

1. HILL背景

密碼的函數特性是明文對密碼為一對一或一對多的關系,即明文是密碼的函數。傳統密碼中有一種移位法,移位法基本形態是加法加密系統C=P+s(mod m)。一般來說,我們以1表示A,2表示B,···,26表示Z,以此類推。由於s=0時相當於未加密,因此整個系統只有(m-1)種變化。換言之,只要試過(m-1)次,機密的信息就會泄漏出去。

2. HILL原理

希爾密碼就是多字母代換密碼的一種,多字母代換密碼可以利用矩陣變換方便地描述,有時又稱為矩陣變換密碼。將d個明文字母通過線性變換將它們轉換為d個密文字母。解密只要做一次逆變換就可以了,密鑰就是變換矩陣本身。

① 先將英文字母變換成數字:

A  B  C  D  ···  X   Y   Z

1  2  3  4   ···  24 25  0  稱為字母表的表值。

② 將明文按n個字母分組,並用對應的數字取代字母,構成一個個n維向量。

③ 取一個在模n運算下可逆的n階矩陣A,用A左乘②中得到的新向量,把新向量中的數字按①中對應關系換算成字母即得到密文。

④ 求出可逆矩陣A在模n下的逆矩陣B,用B左乘③中得到的新向量則重新得到②的向量,從而得到原始明文。矩陣A是解密的關鍵,稱為密鑰。

(模n運算:當n=3時,模3運算意思是:1+3=1,2+3=2,3+3=0,4+3=1即得到的數在0到n-1之間)

MD5

1. MD5背景

MD5即消息摘要算法第五版,是當前計算機領域用於確保信息傳輸完整一致而廣泛使用的散列算法之一。MD5算法的功能是將數據運算變為另一固定長度值,是散列算法的基礎原理。MD5前身有MD4,MD3,MD2。

MD5的功能有:

① 輸入任意長度的信息,經過處理后輸出為128位的信息(數字指紋);

② 不同的輸入得到的不同的結果(唯一性);

③ 根據128位的輸出結果不可能反推出輸入的信息,即不能解密(不可逆)。

2. MD5原理

MD5以512位分組來處理輸入的信息,且每一分租又被划分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。

第一步:填充。如果輸入信息的長度(bit)對512求余的結果不等於448,就需要填充使得對512求余的結果等於448。填充的方法是填充一個1和n個0。填充完后,信息的長度就為N*512+448(bit);

第二步:記錄信息長度。用64位來存儲填充前信息長度。這64位加在第一步結果的后面,這樣信息長度就變為N*512+448+64=(N+1)*512位。

第三步: 裝入標准的幻數(四個整數)。標准的幻數(物理順序)是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16)。如果在程序中定義應該是(A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L)。

第四步:四輪循環運算。

MD5有參考http://blog.csdn.net/forgotaboutgirl/article/details/7258109


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM