RSA加密、解密、簽名、驗籤的原理及方法

https://www.cnblogs.com/pcheng/p/9629621.html

一、RSA加密簡介

  RSA加密是一種非對稱加密。可以在不直接傳遞密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風險。是由一對密鑰來進行加解密的過程,分別稱爲公鑰和私鑰。兩者之間有數學相關,該加密算法的原理就是對一極大整數做因數分解的困難性來保證安全性。通常個人保存私鑰,公鑰是公開的(可能同時多人持有)。

  

二、RSA加密、簽名區別

  加密和簽名都是爲了安全性考慮,但略有不同。常有人問加密和簽名是用私鑰還是公鑰?其實都是對加密和簽名的作用有所混淆。簡單的說,加密是爲了防止信息被泄露,而簽名是爲了防止信息被篡改。這裏舉2個例子說明。

第一個場景:戰場上,B要給A傳遞一條消息,內容爲某一指令。

RSA的加密過程如下:

(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰爲公開的,任何人可以獲取。

(2)A傳遞自己的公鑰給B,B用A的公鑰對消息進行加密。

(3)A接收到B加密的消息,利用A自己的私鑰對消息進行解密。

  在這個過程中,只有2次傳遞過程,第一次是A傳遞公鑰給B,第二次是B傳遞加密消息給A,即使都被敵方截獲,也沒有危險性,因爲只有A的私鑰才能對消息進行解密,防止了消息內容的泄露。

 

第二個場景:A收到B發的消息後,需要進行回覆“收到”。

RSA簽名的過程如下:

(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰爲公開的,任何人可以獲取。

(2)A用自己的私鑰對消息加簽,形成簽名,並將加簽的消息和消息本身一起傳遞給B。

(3)B收到消息後,在獲取A的公鑰進行驗籤,如果驗簽出來的內容與消息本身一致,證明消息是A回覆的。

  在這個過程中,只有2次傳遞過程,第一次是A傳遞加簽的消息和消息本身給B,第二次是B獲取A的公鑰,即使都被敵方截獲,也沒有危險性,因爲只有A的私鑰才能對消息進行簽名,即使知道了消息內容,也無法僞造帶簽名的回覆給B,防止了消息內容的篡改。

 

  但是,綜合兩個場景你會發現,第一個場景雖然被截獲的消息沒有泄露,但是可以利用截獲的公鑰,將假指令進行加密,然後傳遞給A。第二個場景雖然截獲的消息不能被篡改,但是消息的內容可以利用公鑰驗籤來獲得,並不能防止泄露。所以在實際應用中,要根據情況使用,也可以同時使用加密和簽名,比如A和B都有一套自己的公鑰和私鑰,當A要給B發送消息時,先用B的公鑰對消息加密,再對加密的消息使用A的私鑰加簽名,達到既不泄露也不被篡改,更能保證消息的安全性。

  總結:公鑰加密、私鑰解密、私鑰簽名、公鑰驗籤。

發佈了60 篇原創文章 · 獲贊 33 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章