加密與簽名的區別和聯系


數字簽名

簽名:一般是指用自己的私鑰對數據進行加密,只能用公鑰解密,任何人都可以用公鑰解密。因為私鑰只有你自己有,所以保證了該數據肯定是從你這發送出去的,不可能是別人發的。

驗證過程

A 使用自己的私鑰對信息計算一個簽名,將簽名和信息一起發出去,接受者 B 使用 A 的公鑰進行驗簽,如果不是 A 的私鑰計算的簽名,那么驗簽時就會出錯。這樣就能確定該消息是否是 A 發出來的。

一般而言,我們不會直接對數據本身直接計算數字簽名。因為數字簽名屬於非對稱加密,非對稱加密依賴於復雜的數學運算,包括大數乘法、大數模等等,耗時比較久。如果數據量大的時候計算數字簽名將會比較耗時,所以一般做法是先將原數據進行 Hash 運算,得到的 Hash 值就叫做摘要,然后對摘要計算簽名。不同的內容計算出的摘要是不同的。

摘要最好是不可逆轉的,這樣即使第三方使用公鑰解簽出摘要,也無法根據摘要反推出原本的數據。一般使用 MD5 作為 Hash 函數,MD5 輸出的結果固定位 128 位。

  • 發送者使用私鑰對摘要計算數字簽名。那么接收者如何驗證呢?

接受者 A 收到后,取下數字簽名,同時用 B 的公鑰解密,得到摘要1,證明確實是 B 發的。再對郵件內容使用相同的散列函數計算摘要2,與之前得到的摘要1進行對比,兩者一致就說明信息未被篡改。

簽名與加密的區別與聯系

加密:若用別人的公鑰加密,則只有他的私鑰才可以解密,其他人不可能能夠解密,看到你的內容,保證了數據的保密性,也就是保證整個過程的端到端的唯一確定性。

總結:私鑰用來簽名的,公鑰用來驗簽的。公鑰加密私鑰解密是秘送,私鑰加密公鑰解密是簽名。

兩者結合舉例:
A 向 B 發送信息的整個簽名和加密的過程如下:

  1. A 先用自己的私鑰(PRI_A)對信息(一般是信息的摘要)進行簽名。
  2. A 接着使用 B 的公鑰(PUB_B)對信息內容和簽名信息進行加密。

這樣當B接收到A的信息后,獲取信息內容的步驟如下:

  1. 用自己的私鑰(PRI_B)解密 A 用 B 的公鑰(PUB_B)加密的內容;
  2. 得到解密后的明文后用 A 的公鑰(PUB_A)解簽 A 用 A 自己的私鑰(PRI_A)的簽名。

從而整個過程就保證了開始說的端到端的唯一確認。A 的簽名只有 A 的公鑰才能解簽,這樣 B 就能確認這個信息是 A 發來的;A 的加密只有 B 的私鑰才能解密,這樣 A 就能確認這份信息只能被 B 讀取。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM