RSA加密/解密和簽名/驗簽過程

這裏將A理解爲客戶端,B理解爲服務端,可以比較好理解.

  • 加解密過程簡述

A和B進行通信加密,B要先生成一對RSA密鑰,B自己持有私鑰,給A公鑰 --->A使用B的公鑰加密要發送的內容,然後B接收到密文後通過自己的私鑰解密內容

  • 簽名驗簽過程簡述

A給B發送消息,A先計算出消息的消息摘要,然後使用自己的私鑰加密消息摘要,被加密的消息摘要就是簽名.(A用自己的私鑰給消息摘要加密成爲簽名)

B收到消息後,也會使用和A相同的方法提取消息摘要,然後用A的公鑰解密簽名,並與自己計算出來的消息摘要進行比較-->如果相同則說明消息是A發送給B的,同時,A也無法否認自己發送消息給B的事實.(B使用A的公鑰解密簽名文件的過程,叫做"驗籤").

數字簽名的作用:保證數據完整性,機密性和發送方角色的不可抵賴性
加密與簽字結合時,兩套公私鑰是不同的

  • 對簽名和驗簽過程詳細理解:

簽名過程:

1. A計算消息m的消息摘要,記爲 h(m)
2. A使用私鑰(n,d)對h(m)加密,生成簽名s, s滿足:s=(h(m))^d mod n;
   由於A是用自己的私鑰對消息摘要加密,所以只用使用s的公鑰才能解密該消息摘要,這樣A就不可否認自己發送了該消息給B
3. A發送消息和簽名(m,s)給B

驗簽過程:

1. B計算消息m的消息摘要(計算方式和A相同),記爲h(m)
2. B使用A的公鑰(n,e)解密s,得到 H(m), H(m) = s^e mod n
3. B比較H(m)與h(m),相同才能證明驗籤成功

對加密/解密和簽名/驗簽完整過程詳細理解:

A->B:
1. A提取消息m的消息摘要h(m),並使用自己的私鑰對摘要h(m)進行加密,生成簽名s
2. A將簽名s和消息m一起,使用B的公鑰進行加密,生成密文c,發送給B

B:
1. B接收到密文c,使用自己的私鑰解密c得到明文m和數字簽名s
2. B使用A的公鑰解密數字簽名s解密得到H(m)
3. B使用相同的方法提取消息m的消息摘要h(m)
4. B比較兩個消息摘要。相同則驗證成功;不同則驗證失敗


鏈接:https://www.jianshu.com/p/8dc4a5f64e06
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章