-
1 常用加密算法
常用加密算法有 對(duì)稱加密算法、非對(duì)稱加密算法、Hash算法
對(duì)稱加密算法
加密和解密使用相同的秘鑰,加密速度快,但秘鑰管理復(fù)雜
常見的對(duì)稱加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES
非對(duì)稱加密算法
加密和解密使用不同的秘鑰,加密速度教對(duì)稱加密慢,但便于管理,且由于私鑰的唯一性可用作簽名
常見的非對(duì)稱加密算法:RSA、ECC(移動(dòng)設(shè)備用)、Diffie-Hellman、El Gamal、DSA(數(shù)字簽名用)
Hash算法
常用的有MD5和SHA,這倆種算法的特點(diǎn)是不可逆和無沖突
- 不可逆表示知道x的hash值b,無法求出x
- 無沖突指x的hash值b,無法求出hash值為b的另一個(gè)y
這兩條特點(diǎn)在數(shù)學(xué)上是不成立的,但是MD5和SHA算法可以保證求逆和求沖突在計(jì)算上(即使耗盡人類所有計(jì)算資源)不可能
常見的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
-
2 加密算法的選擇
- 由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí),建議采用對(duì)稱加密算法,提高加解密速度。
- 對(duì)稱加密算法不能實(shí)現(xiàn)簽名,因此簽名只能非對(duì)稱算法。
- 由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時(shí),我們可以考慮采用非對(duì)稱加密算法。
- 在實(shí)際的操作過程中,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰,然后用對(duì)稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點(diǎn),既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn),又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)。
那采用多少位的密鑰呢? RSA建議采用1024位的數(shù)字,ECC建議采用160位,AES采用128為即可
參考:
http://code.huawei.com/h00403666/learning/blob/master/psm/doc/psm_encry.md
https://www.zhihu.com/question/20820286