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