由於要寫一個用戶端與伺服器端通訊的程式,所以開始關注加解密一塊了。當然不是研究因為已經有很多成熟的解決方案和演算法了。只是之前知道而以,現在需要更加深入的瞭解一下。以下介紹純屬網上收集的資料整理及個人的理解,可能有些地方不準確,望指證。
目前主流的加解密技術主要有兩大類:一個是對稱,一個是非對稱。簡單的講對稱就是交換訊息的雙方使用相同的密鑰,比如一個固定位元的字串。反之,非對稱已經交換訊息的雙方使用不同的密鑰,也就是我們常見的在在非對稱加解密演算法中有公開金鑰和私密金鑰。
對稱加解密演算法主要有:DES,3DES,AES
非對稱加解密演算法主要有:RSA
以下是這幾種演算法的簡要介紹
DES
DES演算法為密碼體制中的對稱密碼體制,是1972年美國IBM公司研製的對稱密碼體制密碼編譯演算法。
3DES
3DES(即Triple DES)是DES向AES過渡的密碼編譯演算法,它使用3條64位的金鑰組資料進行三次加密。是DES的一個更安全的變形。
AES
AES是美國國家標準技術研究所NIST旨在取代DES的21世紀的加密標準。AES的基本要求是,採用對稱分組密碼體制,密鑰長度的最少支援為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現
RSA
RSA是被研究得最廣泛的公開金鑰演算法,從提出到現在已近二十年,經曆了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公開金鑰方案之一
XML加密
XML 加密為需要結構化資料安全交換的應用程式提供了一種端到端安全性,可以使用對稱或非對稱演算法為XML進行加解密。XML 和安全性已整合到 W3C XML 加密工作草案中。
Ok,以上的技術介紹完了,下面就來下看我們的測試資料吧。
測試環境
硬體:Thinkpad x200, Intel P8600 2.4GHz, 6GB RAM,500GB(7200RPM)
軟體:Win 7 企業版 x64,Visual Studio 2010
開發語言:.NET(C# 2.0)
測試說明
迴圈執行1000次,以對使用不同的演算法和密鑰長度對一個字串: cbcye.com 進行加、解密。
測試結果
加解密技術處理時間對比 |
技術 |
1000次運算處理時間 (單位:毫秒) |
XML RSA加解密 |
22114.4589 |
AES(128位) |
24.0014 |
AES(256位) |
30.0017 |
DES(56位) |
480.0275 |
RSA |
22723.2911 |
好了,以上就是初步的測試結果,供大家參考吧。本程式源碼下載