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