摘要算法与加密(以MD5算法为例)
【README】
部分內(nèi)容總結(jié)自:
摘要與加密的區(qū)別(以MD5算法為例) - 掘金https://juejin.cn/post/6844903561478799368
【1】摘要算法與加密區(qū)別
【1.1】摘要算法(不可逆)
1)摘要算法:
- 說白了,就是一個(gè)散列或哈希函數(shù),摘要就是一個(gè)hash值,僅此而已;理論上講,這個(gè)hash值一旦生成,則無法可逆反推出 原生值;根本不存在加解密一說了;
詳細(xì)說明:
摘要是哈希值,我們通過散列算法比如MD5算法就可以得到這個(gè)哈希值。
摘要只是用于驗(yàn)證數(shù)據(jù)完整性和唯一性的哈希值,不管原始數(shù)據(jù)是什么樣的,得到的哈希值都是固定長(zhǎng)度的。
不管原始數(shù)據(jù)是什么樣的,得到的哈希值都是固定長(zhǎng)度的,也就是說摘要并不是原始數(shù)據(jù)加密后的密文,只是一個(gè)驗(yàn)證身份的令牌。所以我們無法通過摘要解密得到原始數(shù)據(jù)。
【1.2】加密算法(可逆)
【1.2.1】加密算法定義:
- 加密是通過 “加密算法” 將 "明文" 加密成 “密文”。 我們可以通過 “密鑰” 和 “解密算法” 將 “密文” 還原成 “明文”。
【1.2.2】加密算法分類:(可逆,即明文加密成密文,密文可以解密出明文)
1)對(duì)稱加密
- 加解密使用同一個(gè)密鑰;
2)非對(duì)稱加密:有公鑰和私鑰之分;私鑰自己保存,公鑰公開出來,給他人使用;但公鑰和私鑰是成對(duì)的,它們互相解密;
- 用途1:-可以用公鑰加密,私鑰解密;保護(hù)信息傳輸安全;如網(wǎng)絡(luò)上傳輸用戶名和密碼時(shí)就可以采用這種方式,前端用公鑰對(duì)用戶名密碼加密,網(wǎng)絡(luò)上傳輸?shù)氖敲芪?#xff0c;后端用私鑰解密;
- 用途2-可以用私鑰加密(數(shù)字簽名),公鑰解密(驗(yàn)證簽名);用于驗(yàn)證消息發(fā)送方是否正確;
【例】私鑰簽名,公鑰驗(yàn)簽例子
如果我用私鑰加密一段數(shù)據(jù)(當(dāng)然只有我可以用私鑰加密,因?yàn)橹挥形抑?是我的私鑰),結(jié)果所有的人都看到我的內(nèi)容了,因?yàn)樗麄兌贾?br /> 道我的公鑰是1,那么這種加密有什么用處呢?
但是我的好朋友x說有人冒充我給他發(fā)信。怎么辦呢?我把我要發(fā)的信,內(nèi)容是c,用我的私鑰2,加密,加密后的內(nèi)容是d,發(fā)給x,再告訴他
解密看是不是c。他用我的公鑰1解密,發(fā)現(xiàn)果然是c。
這個(gè)時(shí)候,他會(huì)想到,能夠用我的公鑰解密的數(shù)據(jù),必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認(rèn)確實(shí)是我發(fā)的東西。
這樣我們就能確認(rèn)發(fā)送方身份了。這個(gè)過程叫做數(shù)字簽名。當(dāng)然具體的過程要稍微復(fù)雜一些。用私鑰來加密數(shù)據(jù),用途就是數(shù)字簽名。
【2】MD5使用場(chǎng)景(摘要算法使用場(chǎng)景)
平時(shí)的軟件研發(fā)中經(jīng)常使用MD5校驗(yàn)消息是否被篡改、驗(yàn)證文件完整性。
場(chǎng)景1-驗(yàn)證是否被篡改:
- 比如,上傳下載文件。數(shù)據(jù)的 發(fā)送方 將原始數(shù)據(jù)生成MD5摘要,然后把 原始數(shù)據(jù) 與其 MD5摘要一起發(fā)送給 接收方;接收方收到數(shù)據(jù)后,先將原始數(shù)據(jù)用MD5算法生成摘要信息,然后再將此摘要信息與發(fā)送方發(fā)過來的摘要信息進(jìn)行比較,如果一致就認(rèn)為原始數(shù)據(jù)沒有被修改、或者損壞。
場(chǎng)景2-防止抵賴:
- 例如A寫了一個(gè)文件,某認(rèn)證機(jī)構(gòu)對(duì)此文件用MD5算法產(chǎn)生摘要信息并做好記錄。若以后A說這文件不是他寫的,權(quán)威機(jī)構(gòu)只需對(duì)此文件重新產(chǎn)生摘要信息,然后跟記錄在冊(cè)的摘要信息進(jìn)行比對(duì),若摘要信息相同,則證明為A寫的文件。
總結(jié)
以上是生活随笔為你收集整理的摘要算法与加密(以MD5算法为例)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 猜拳怎么玩 基本规则介绍
- 下一篇: 4-存储器