加密
加密有兩種目的:
簽名
只需要加密后的密文,用來(lái)做驗(yàn)證贡羔,確保提供的原始文本在傳遞或者保存過(guò)程中沒(méi)有被修改過(guò)廉白,但是原始的明文文本是什么它不關(guān)心或者沒(méi)有隱藏的必要。這在現(xiàn)實(shí)中用途很廣泛乖寒,比如老板說(shuō)“明天放假一天”猴蹂,這條文本本身沒(méi)有加密的必要,但是需要確保的是內(nèi)容沒(méi)有被修改宵统,一天不會(huì)被改成兩天晕讲。
實(shí)現(xiàn)這一目的的加密算法,一般是使用被稱為單向散列函數(shù)加密
的算法马澈,但也有使用非對(duì)稱加密
的算法瓢省,比如DSA
。
解密
加密后的密文痊班,需要可以被解密成明文勤婚。這是我們一般意義上的加密的目的,在傳遞或者保存中涤伐,第三方看不到原始的明文文本馒胆,不知道內(nèi)容是什么。
實(shí)現(xiàn)這一目的的加密算法有兩種:對(duì)稱加密
和非對(duì)稱加密
凝果。
比較
哈希要達(dá)到的效果是:不能由密文推導(dǎo)出明文祝迂;而解密要達(dá)到的效果是:沒(méi)有密碼或者密鑰,不能推導(dǎo)出明文器净。
算法
加密算法可以分成三個(gè)種類:?jiǎn)蜗蛏⒘泻瘮?shù)加密型雳、對(duì)稱加密和非對(duì)稱加密。第一種一般用來(lái)處理簽名和消息驗(yàn)證,后面兩種一般用來(lái)進(jìn)行加密解密纠俭,但這不是絕對(duì)的區(qū)分沿量。
單向散列函數(shù)加密
哈希:散列,又稱為雜湊冤荆,哈希朴则,其實(shí)都是英文 hash 的翻譯。散列函數(shù)又被稱為散列算法钓简。最常用的是以下兩種算法:
- MD5(Message-Digest Algorithm乌妒,即信息摘要算法),由MD2外邓、MD3芥被、MD4改進(jìn)而來(lái)。
- SHA(Secure Hash Algorithm坐榆,即安全散列算法)拴魄,包含SHA-0,SHA-1席镀,SHA-2(SHA-224匹中、SHA-256、SHA-512等)和SHA-3(SHA3-224豪诲、SHA3-256和SHA3-512等)顶捷。
對(duì)稱加密
對(duì)稱加密,是指加密和解密使用相同的密鑰屎篱。最常用的有以下兩種算法服赎。
- DES(Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn))和 3DES(即三重?cái)?shù)據(jù)加密算法)
- AES(Advanced Encryption Standard交播,即高級(jí)加密標(biāo)準(zhǔn))
非對(duì)稱加密
非對(duì)稱加密重虑,是指加密和解密使用的是兩個(gè)不相同的密鑰。通常這兩個(gè)密鑰其中一個(gè)是公開(kāi)的秦士,所以這一加密方法也被稱為公開(kāi)密鑰加密
缺厉。
- RSA(三個(gè)人名的首字母),它的核心是質(zhì)因數(shù)分解隧土。這個(gè)算法可以用來(lái)對(duì)文本進(jìn)行加密和解密提针。
- DSA(Digital Signature Algorithm,即數(shù)字簽名算法)曹傀,它的核心是模算數(shù)和離散對(duì)數(shù)問(wèn)題辐脖。它僅用于簽名而不能用戶解密。算法中使用的散列函數(shù)是SHA家族皆愉。
實(shí)際實(shí)現(xiàn)中還有使用 ECC(Elliptic Curve Cryptography嗜价,即橢圓曲線密碼學(xué))的ECDSA等算法落萎,是ECC和DSA的結(jié)合。
證書
X.509
是密碼學(xué)里公鑰證書的格式標(biāo)準(zhǔn)炭剪。
X.509證書里含有公鑰、身份信息(比如網(wǎng)絡(luò)主機(jī)名翔脱,組織的名稱或個(gè)體名稱等)和簽名信息奴拦,還附帶了證書吊銷列表和用于從最終對(duì)證書進(jìn)行簽名的證書簽發(fā)機(jī)構(gòu)直到最終可信點(diǎn)為止的證書合法性驗(yàn)證算法。
格式標(biāo)準(zhǔn)
格式標(biāo)準(zhǔn)用于指定保存證書或者是公鑰和密鑰的容器格式届吁。
- DER(Distinguished Encoding Rules错妖,即唯一編碼規(guī)則),是一種二進(jìn)制格式疚沐。
- PEM(Privacy-Enhanced Mail暂氯,即隱私增強(qiáng)型郵件),是一種被編碼成base64的文本格式亮蛔。
- PKCS(Public Key Cryptography Standards痴施,即公鑰加密標(biāo)準(zhǔn)),這是有RSA信息安全公司制定的一系列公開(kāi)密鑰密碼編譯標(biāo)準(zhǔn)究流。包含
PKCS#1
~PKCS#15