1. 程式人生 > >加密解密流程和各加密演算法的選擇、用途

加密解密流程和各加密演算法的選擇、用途

加密演算法的分類:

雙向加密:分為對稱加密和非對稱加密。

對稱加密

採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。 
需要對加密和解密使用相同金鑰的加密演算法。由於其速度,對稱性加密通常在訊息傳送方需要加密大量資料時使用。對稱性加密也稱為金鑰加密。 
所謂對稱,就是採用這種加密方法的雙方使用方式用同樣的金鑰進行加密和解密。金鑰是控制加密及解密過程的指令。 

演算法是一組規則,規定如何進行加密和解密。因此對稱式加密本身不是安全的。  

            非對稱加密

1976年,美國學者Dime和Henman為解決資訊公開傳送和金鑰管理問題,提出一種新的金鑰交換協議,允許在不安全的媒體上的通訊雙方交換資訊,安全地達成一致的金鑰,這就是“公開金鑰系統”。相對於“對稱加密演算法”這種方法也叫做“非對稱加密演算法”。 與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰 
(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。 

單向加密(資訊摘要):

1. MD5 即Message-Digest Algorithm 5(資訊-摘要演算法 5),用於確保資訊傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、雜湊演算法), 主流程式語言普遍已有MD5實現。將資料(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。MD5的作用是讓 大容量資訊在用數字簽名軟體簽署私人金鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進位制數字串)。 
除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等 
2、SHA 是一種資料加密演算法,該演算法經過加密專家多年來的發展和改進已日益完善,現在已成為公認的最安全的雜湊演算法之一,並被廣泛使用。
該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預對映或資訊), 並把它們轉化為長度較短、位數固定的輸出序列即雜湊值(也稱為資訊摘要或資訊認證程式碼)的過程。雜湊函式值可以說時對明文的一種“指紋”或是“摘要”所以 對雜湊值的數字簽名就可以視為對此明文的數字簽名。 
加密的實質就是數學運算. 對於對稱加密,存在一個KEY,所以,對稱演算法都是可逆的.逆運算就可以得到原文.
RSA是可逆的.它是由公鑰/私鑰組成.公鑰加密後,只有配套私鑰能解. 例子: A與B通訊 A生成金鑰公鑰A/私鑰A. B生成金鑰公鑰B/私鑰B.
 * A通過網路之類把公鑰A傳送給B,反之亦然. 以後,A傳送給B的資料,先用公鑰B加密,加密後,只有B能解開,因為只有他擁有私鑰B.反之亦然.
中間人欺騙:
 * 假設C位於A與B之間,那麼A傳送公鑰A給B的時候,C攔截下來,把公鑰C發給B.反之亦然.
 * 然後,A傳送資料,用公鑰C加密,C接收後,用私鑰C解密.然後再用公鑰B加密後傳送給B.反之亦然.

實際專案中的加密流程:

1、根據上面的介紹,我們解密資料,考慮安全性,首選非對稱性加密,如RSA加密演算法。 但是非對稱加密演算法的效率一般都比對稱加密演算法(如DES)低。 2、對稱加密演算法(DES)雖然效率高,但是安全性不高。例如DES祕鑰洩露的話,加密資料會被零成本的翻譯成明文。 3、折中的辦法是 大量資料用DES加密傳輸,DES的祕鑰用RSA演算法加密。這樣既保證了安全性也又提高了效率。 4、RSA加密DES的祕鑰 在網路上傳輸的話,還存在RSA的中間人欺騙問題。 5、為解決中間人欺騙的問題,我們需要公證的第三方認證,即ca認證。