對(duì)稱(chēng)加密:加密和解密使用同一個(gè)密鑰,特點(diǎn):保證了數(shù)據(jù)的保密性。局限性:無(wú)法解決密鑰交換問(wèn)題。常用的算法有:DES,3DES,AES;
公鑰加密:生成一個(gè)密鑰對(duì)(私鑰和公鑰),加密時(shí)用私鑰加密,解密時(shí)用公鑰解密,特點(diǎn):解決了密鑰交換問(wèn)題。局限性:對(duì)大的數(shù)據(jù)加密速度慢。
單向加密:提取數(shù)據(jù)的特征碼,特點(diǎn):定長(zhǎng)輸出,不可逆,可檢驗(yàn)數(shù)據(jù)的完整性。局限性:無(wú)法保證數(shù)據(jù)的保密性。常用算法:MD5、SHA1、CRC-32。
三種加密方法各有優(yōu)缺點(diǎn),在時(shí)實(shí)際應(yīng)用中,數(shù)據(jù)從發(fā)送方到達(dá)接收方,通常是這樣應(yīng)用的:
1) 首先對(duì)要發(fā)送的數(shù)據(jù)做單向加密,獲取數(shù)據(jù)的特征碼;
2) 對(duì)特征碼用發(fā)送方的私鑰進(jìn)行加密生成S1;
3) 然后對(duì)S1和數(shù)據(jù)進(jìn)行對(duì)稱(chēng)加密生成S2;
4) 最后將S2和對(duì)稱(chēng)加密的密碼使用接收方的公鑰進(jìn)行加密。
這樣一來(lái)數(shù)據(jù)在傳輸過(guò)程中的完整性、保密性以及對(duì)發(fā)送方身份的驗(yàn)證都能得到保障。
當(dāng)數(shù)據(jù)到達(dá)接收方時(shí),接收方先用自己的私鑰對(duì)接收到的數(shù)據(jù)進(jìn)行解密,得到密碼和加密的數(shù)據(jù);使用密碼對(duì)加密數(shù)據(jù)解密,得到加密的特征碼和數(shù)據(jù);用發(fā)送方的公鑰解密特征碼,如果能解密,則說(shuō)明該數(shù)據(jù)是由發(fā)送方所發(fā);反之則不是,這便實(shí)現(xiàn)了身份驗(yàn)證;最后計(jì)算數(shù)據(jù)的特征碼和解密出來(lái)的特征碼做對(duì)比,如果一樣,則該數(shù)據(jù)沒(méi)有被修改;反之則數(shù)據(jù)被修改過(guò)了。