常見(jiàn)加密算法
- 對(duì)稱(chēng)加密算法
- 非對(duì)稱(chēng)加密算法
- Hash算法
對(duì)稱(chēng)加密
對(duì)稱(chēng)加密算法,就是使用同一個(gè)秘鑰進(jìn)行加密和解密。
- 優(yōu)點(diǎn)是速度較快,適合對(duì)數(shù)據(jù)量比較大的數(shù)據(jù)進(jìn)行加密。
- 缺點(diǎn)是密鑰的保存方式需要保證安全,一旦加密或者解密的哪一方泄漏了密鑰,都會(huì)導(dǎo)致信息的泄漏。
常用的對(duì)稱(chēng)加密算法有:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6、AES。
DES
DES加密算法是一種分組加密算法,以64位為分組對(duì)數(shù)據(jù)進(jìn)行加密,他的密鑰長(zhǎng)度為56位,速度較快,適合用于大量數(shù)據(jù)加密的場(chǎng)合。
3DES
基于DES加密,對(duì)一塊數(shù)據(jù)使用三個(gè)不同的密鑰進(jìn)行加密三次,強(qiáng)度更高。
AES
高級(jí)加密標(biāo)準(zhǔn),是新一代加密算法標(biāo)準(zhǔn),取代DES,速度快,安全級(jí)別高。密鑰長(zhǎng)度最少支持128、192、256,分租長(zhǎng)度128位。
非對(duì)稱(chēng)加密
與對(duì)稱(chēng)加密相對(duì)的,非對(duì)稱(chēng)加密需要兩個(gè)密鑰,一個(gè)公開(kāi)密鑰(Public Key),一個(gè)私有密鑰(Private Key)。公鑰和私鑰是一對(duì),如果使用公鑰進(jìn)行加密的數(shù)據(jù),只有對(duì)應(yīng)的私鑰才能解密。相對(duì)的,如果是使用私鑰加密的數(shù)據(jù),只有對(duì)應(yīng)的公鑰才能解密。
優(yōu)點(diǎn)是公鑰可以被任何人知道,而公鑰的泄漏也不會(huì)導(dǎo)致信息泄漏,但是一旦私鑰泄漏了就會(huì)導(dǎo)致信息泄漏。
常用的非對(duì)稱(chēng)加密算法有:RSA、ECC(移動(dòng)設(shè)備用)、Diffie-Hellman、El Gamal、DSA(數(shù)字簽名用)。
RSA
RSA加密算法是目前最有影響力的公鑰加密算法,并且被普遍任務(wù)是最優(yōu)秀的公鑰方案之一。RSA是第一個(gè)能同時(shí)加密和數(shù)字簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊。
RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但是如果想要對(duì)其進(jìn)行因式分解卻極其困難,因此可以將乘積公開(kāi)作為密鑰。
ECC
ECC使用的是橢圓曲線(xiàn)編碼學(xué),相對(duì)于RSA,ECC的抗攻擊性更強(qiáng),并且計(jì)算量小,處理速度快,存儲(chǔ)空間占用小,所以適用于移動(dòng)設(shè)備使用。
Hash算法
Hash算法(哈希散列算法)特別之處在于它是一種單向算法,即不可逆,用戶(hù)可以通過(guò)Hash算法對(duì)目標(biāo)信息生成一段特定長(zhǎng)度的唯一的Hash值,但是卻不能通過(guò)這個(gè)Hash值重新獲得目標(biāo)信息。
因?yàn)榇颂攸c(diǎn),Hash算法通常用在存儲(chǔ)不可還原的密碼存儲(chǔ),信息完整校驗(yàn)等地方。
常用的Hash算法有:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
MD5
MD5加密算法可以簡(jiǎn)單的分析為以512位分組來(lái)處理輸入的信息,且每一個(gè)分組又被劃分為16個(gè)32位的子分組,經(jīng)過(guò)一系列的處理之后,算法的輸出由4個(gè)32位分組組成,將這4個(gè)32位分組級(jí)聯(lián)后就會(huì)生成一個(gè)128位散列值。
MD5大多被用于軟件的密碼認(rèn)證和鑰匙識(shí)別上。
SHA1
SHA1和MD5一樣是流行的信息摘要算法。對(duì)于長(zhǎng)度小于2’64位的消息,SHA1會(huì)生成一個(gè)160位的信息摘要,當(dāng)接收到消息的時(shí)候,這個(gè)消息摘要可以用來(lái)驗(yàn)證數(shù)據(jù)的完整性,在傳輸?shù)倪^(guò)程中,數(shù)據(jù)很可能發(fā)生變化,那么這時(shí)候就會(huì)生成不同的信息摘要。SHA1不可以從消息摘要中復(fù)原信息,而兩個(gè)不同的消息不會(huì)產(chǎn)生同樣的信息摘要。這樣,SHA1就可以用來(lái)驗(yàn)證數(shù)據(jù)的完整性。
算法選擇
對(duì)稱(chēng)加密的算法相較于非對(duì)稱(chēng)加密算法會(huì)快很多,如果需要對(duì)大量的數(shù)據(jù)進(jìn)行加密時(shí),建議采用對(duì)稱(chēng)加密算法,加快加密解密速度。
而對(duì)于需要簽名的情況,只能使用非對(duì)稱(chēng)加密。
當(dāng)數(shù)據(jù)量很小,而密鑰的管理用來(lái)決定數(shù)據(jù)安全時(shí),最好使用非對(duì)稱(chēng)加密。
在選定了算法之后,選擇多少位的密鑰也是一個(gè)難題,一般情況下,密鑰越長(zhǎng),運(yùn)行的速度越慢,所以我們要根據(jù)實(shí)際需要選擇加密的位數(shù),一般來(lái)說(shuō),RSA采用1024位,ECC采用160位,AES采用128位。