加 密算法通常分為對稱性加密算法和非對稱性加密算法,對于對稱性加密算法,資訊接收雙方都需事先知道密匙和加解密算法且其密匙是相同的,之後便是對資料進行 加解密了。非對稱算法與之不同,發送雙方a,b事先均生成一堆密匙,然後a将自己的公有密匙發送給b,b将自己的公有密匙發送給a,如果a要給b發送消 息,則先需要用b的公有密匙進行消息加密,然後發送給b端,此時b端再用自己的私有密匙進行消息解密,b向a發送消息時為同樣的道理。
幾種對稱性加密算法:aes,des,3des
des是一種分組資料加密技術(先将資料分成固定長度的小資料塊,之後進行加密),速度較快,适用于大量資料加密,而3des是一種基于des的加密算法,使用3個不同密匙對同一個分組資料塊進行3次加密,如此以使得密文強度更高。
相較于des和3des算法而言,aes算法有着更高的速度和資源使用效率,安全級别也較之更高了,被稱為下一代加密标準。
幾種非對稱性加密算法:rsa,dsa,ecc
rsa和dsa的安全性及其它各方面性能都差不多,而ecc較之則有着很多的性能優越,包括處理速度,帶寬要求,存儲空間等等。
幾種線性雜湊演算法(簽名算法):md5,sha1,hmac
這幾種算法隻生成一串不可逆的密文,經常用其效驗資料傳輸過程中是否經過修改,因為相同的生成算法對于同一明文隻會生成唯一的密文,若相同算法生成的密文不同,則證明傳輸資料進行過了修改。通常在資料傳說過程前,使用md5和sha1算法均需要發送和接收資料雙方在資料傳送之前就知道密匙生成算法,而hmac與之不同的是需要生成一個密匙,發送方用此密匙對資料進行摘要處理(生成密文),接收方再利用此密匙對接收到的資料進行摘要處理,再判斷生成的密文是否相同。
對于各種加密算法的選用:
由于對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定着他的安全性,是以當資料量很小時,我們可以考慮采用非對稱加密算法。
在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密資料,這樣我們就內建了兩類加密算法的優點,既實作了加密速度快的優點,又實作了安全友善管理密鑰的優點。
如果在標明了加密算法後,那采用多少位的密鑰呢?一般來說,密鑰越長,運作的速度就越慢,應該根據的我們實際需要的安全級别來選擇,一般來說,rsa建議采用1024位的數字,ecc建議采用160位,aes采用128為即可。
ps:
1、公鑰加密體制用于保密性時,就是公鑰加密,私鑰解密。 因為公鑰是可以公開了, 那麼任何人都可以使用公鑰對資訊進行加密,但是隻有持有私鑰的人才能正确解密。這樣就保證了資訊的保密性,因為隻有私鑰持有者才能正确解密。
2、公鑰加密體制用于認證性時,比如數字簽名,即私鑰持有者對資訊進行簽名,驗證者可以根據公開的公鑰進行驗證簽名是否正确和有效,即實作了認證性,以及不可抵賴性。
公鑰加密私鑰解密, 沒問題,也可以說是"公共密鑰加密系統"
私鑰加密公鑰解密,一般不這麼說,應叫"私鑰簽名,公鑰驗證",也可以說是“公共密鑰簽名系統”
再來說一下"公共密鑰簽名系統"目的:(如果暈就多看幾遍,這個沒搞清,後面的代碼就更暈)
a欲傳(資訊)給b,但又怕b不确信該資訊是a發的。
1.a選計算(資訊)的hash值,如用md5方式計算,得到:[md5(資訊)]
2.然後用自已的私鑰加密hash值,得到:[私鑰(md5(資訊))]
3.最後将資訊與密文一起傳給b:傳給b:[(資訊) + 私鑰(md5(資訊))]
b接到 :[(資訊) + 私鑰(md5(資訊))]
1.先用相同的hash算法算出(資訊)的hash值,這裡也使用md5方式
得到: [md5(資訊)!]
2. 再用a的公鑰解密 [ 私鑰(md5(資訊))]
[公鑰(私鑰(md5(資訊)))] = [(md5(資訊)]
如能解開,證明該 [ 私鑰(md5(資訊))]是a發送的
3.再比效[md5(資訊)!]與[(md5(資訊)]
如果相同,表示(資訊)在傳遞過程中沒有被他人修改過