1、加密和解密過程不同
對稱加密過程和解密過程使用的同壹個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密采用了兩個密鑰,壹般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密算法中私鑰是基於不同的算法生成不同的隨機數,私鑰通過壹定的加密算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
壹、對稱加密算法
? 指加密和解密使用相同密鑰的加密算法。對稱加密算法用來對敏感數據等信息進行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
?DES(Data Encryption Standard) :數據加密標準,速度較快,適用於加密大量數據的場合。
?3DES(Triple DES) :是基於DES,對壹塊數據用三個不同的密鑰進行三次加密,強度更高。
?AES(Advanced Encryption Standard) :高級加密標準,是下壹代的加密算法標準,速度快,安全級別高;
二、非對稱加密算法
? 指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。假設兩個用戶要加密交換數據,雙方交換公鑰,使用時壹方用對方的公鑰加密,另壹方即可用自己的私鑰解密。常見的非對稱加密算法:RSA、DSA(數字簽名用)、ECC(移動設備用)、Diffie-Hellman、El Gamal。
RSA: 由 RSA 公司發明,是壹個支持變長密鑰的公***密鑰算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm) :數字簽名算法,是壹種標準的 DSS(數字簽名標準);
ECC(Elliptic Curves Cryptography) :橢圓曲線密碼編碼學。
ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
(1)抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。
(2)計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
(3)存儲空間占用小。ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所占的存貯空間要小得多。這對於加密算法在IC卡上的應用具有特別重要的意義。
(4)帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網絡領域具有廣泛的應用前景。
三、散列算法(Hash算法---單向加密算法)
散列是信息的提煉,通常其長度要比信息小得多,且為壹個固定長度。加密性強的散列壹定是不可逆的,這就意味著通過散列結果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅壹位,都將導致散列結果的明顯變化,這稱之為雪崩效應。散列還應該是防沖突的,即找不出具有相同散列結果的兩條信息。具有這些特性的散列結果就可以用於驗證信息是否被修改。
Hash算法: 特別的地方在於它是壹種單向算法,用戶可以通過Hash算法對目標信息生成壹段特定長度的唯壹的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。
單向散列函數壹般用於產生消息摘要,密鑰加密等,常見的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
MD5(Message Digest Algorithm 5): 是RSA數據安全公司開發的壹種單向散列算法,非可逆,相同的明文產生相同的密文。
SHA(Secure Hash Algorithm): 可以對任意長度的數據運算生成壹個160位的數值;
SHA-1與MD5的比較
因為二者均由MD4導出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
(1)對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何壹個報文使其摘要等於給定報摘要的難度對MD5是2^(128)數量級的操作,而對SHA-1則是2^(160)數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。
(2)對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
速度:在相同的硬件上,SHA-1的運行速度比MD5慢。
四、 加密算法的選擇
1.由於非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數據時,建議采用對稱加密算法,提高加解密速度。
2.對稱加密算法不能實現簽名,因此簽名只能非對稱算法。
3.由於對稱加密算法的密鑰管理是壹個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮采用非對稱加密算法。
4.在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密數據,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
?那采用多少位的密鑰呢?
?RSA建議采用1024位的數字,ECC建議采用160位,AES采用128為即可。