淺析幾種常見的加密算法以及如何選用

加密算法通常分為對稱性加密算法和非對稱性加密算法,對于對稱性加密算法,信息接收雙方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是對數(shù)據(jù)進行 加解密了。非對稱算法與之不同,發(fā)送雙方A,B事先均生成一堆密匙,然后A將自己的公有密匙發(fā)送給B,B將自己的公有密匙發(fā)送給A,如果A要給B發(fā)送消 息,則先需要用B的公有密匙進行消息加密,然后發(fā)送給B端,此時B端再用自己的私有密匙進行消息解密,B向A發(fā)送消息時為同樣的道理。

淺析幾種常見的加密算法以及如何選用

幾種對稱性加密算法:AES,DES,3DES

DES是一種分組數(shù)據(jù)加密技術(shù)(先將數(shù)據(jù)分成固定長度的小數(shù)據(jù)塊,之后進行加密),速度較快,適用于大量數(shù)據(jù)加密,而3DES是一種基于DES的加密算法,使用3個不同密匙對同一個分組數(shù)據(jù)塊進行3次加密,如此以使得密文強度更高。
相較于DES和3DES算法而言,AES算法有著更高的速度和資源使用效率,安全級別也較之更高了,被稱為下一代加密標準。

幾種非對稱性加密算法:RSA,DSA,ECC

RSA和DSA的安全性及其它各方面性能都差不多,而ECC較之則有著很多的性能優(yōu)越,包括處理速度,帶寬要求,存儲空間等等。

幾種線性散列算法(簽名算法):MD5,SHA1,HMAC

這幾種算法只生成一串不可逆的密文,經(jīng)常用其效驗數(shù)據(jù)傳輸過程中是否經(jīng)過修改,因為相同的生成算法對于同一明文只會生成唯一的密文,若相同算法生成的密文不同,則證明傳輸數(shù)據(jù)進行過了修改。通常在數(shù)據(jù)傳說過程前,使用MD5和SHA1算法均需要發(fā)送和接收數(shù)據(jù)雙方在數(shù)據(jù)傳送之前就知道密匙生成算法,而HMAC與之不同的是需要生成一個密匙,發(fā)送方用此密匙對數(shù)據(jù)進行摘要處理(生成密文),接收方再利用此密匙對接收到的數(shù)據(jù)進行摘要處理,再判斷生成的密文是否相同。

對于各種加密算法的選用:

由于對稱加密算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數(shù)據(jù)量很小時,我們可以考慮采用非對稱加密算法。

在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。

如果在選定了加密算法后,那采用多少位的密鑰呢?一般來說,密鑰越長,運行的速度就越慢,應該根據(jù)的我們實際需要的安全級別來選擇,一般來說,RSA建議采用1024位的數(shù)字,ECC建議采用160位,AES采用128為即可。