編碼(encoding)
編碼本質(zhì)上是信息形式的轉(zhuǎn)化。
通過解碼可以還原原始信息。
編碼的目的是將消息轉(zhuǎn)化成統(tǒng)一的格式,方便在不同系統(tǒng)之中傳輸。
例如最常見的ASCII字符編碼。由于網(wǎng)絡(luò)上只能傳輸二進(jìn)制數(shù)據(jù),任何數(shù)據(jù)如果想要經(jīng)由網(wǎng)絡(luò)傳輸,就必須先轉(zhuǎn)化成二進(jìn)制,ASCII 提供了一個(gè)將A、B、C等字母轉(zhuǎn)化為二進(jìn)制的規(guī)則。
例子:ASCII, Unicode, URL Encoding, Base64
摘要(digest)
摘要是通過散列函數(shù)對(duì)信息運(yùn)算生成的固定大小的數(shù)字“指紋”。
相同信息使用同一散列函數(shù)生成的摘要總是相同,信息修改后生成的摘要總是與之前不同。
摘要信息不能被還原成原始信息。
摘要的目的是為了校驗(yàn)信息的完整性,保證信息在傳輸過程中不被篡改。
例如你在網(wǎng)絡(luò)上需要下載一個(gè)非官方論壇軟件,但又擔(dān)心軟件被第三方篡改,可以將該軟件的md5值和官方下載的md5值進(jìn)行對(duì)比,如果一致,則可放心使用。
例子:MD5, SHA, MAC
加密(encryption)
加密是將明文信息改變?yōu)殡y以讀取的密文內(nèi)容,使之不可讀。
加密信息能通過密鑰被還原為原始信息。
加密是為了保證信息安全,使得沒有正確密鑰的人不能獲取信息內(nèi)容。
例如你想給某人發(fā)送一封密信,或通過互聯(lián)網(wǎng)給人發(fā)送密碼,這些對(duì)隱秘性要求比較強(qiáng)的事情,就需要對(duì)信息進(jìn)行加密。
例子:DES, AES, Blowfish, RSA
參考
編碼、摘要、加密的區(qū)別
http://goldenera.me/2017/02/16/編碼、摘要、加密的區(qū)別/