首先明確幾個基本概念:
1、密鑰對,在非對稱加密技術中,有兩種密鑰,分為私鑰和公鑰,私鑰是密鑰對所有者持有,不可公布,公鑰是密鑰對持有者公布給他人的。
2、公鑰,公鑰用來給數據加密,用公鑰加密的數據只能使用私鑰解密。
3、私鑰,如上,用來解密公鑰加密的數據。
4、摘要,對需要傳輸的文本,做一個HASH計算,一般采用SHA1,SHA2來獲得。
5、簽名,使用私鑰對需要傳輸的文本的摘要進行加密,得到的密文即被稱為該次傳輸過程的簽名。(看最下面的一部分就明白了)
6、簽名驗證,數據接收端,拿到傳輸文本,但是需要確認該文本是否就是發送發出的內容,中途是否曾經被篡改。因此拿自己持有的公鑰對簽名進行解密(密鑰對中的一種密鑰加密的數據必定能使用另一種密鑰解密。),得到了文本的摘要,然后使用與發送方同樣的HASH算法計算摘要值,再與解密得到的摘要做對比,發現二者完全一致,則說明文本沒有被篡改過。
上面實際上介紹了加密解密和數字簽名兩個概念和實現過程,二者的過程正好是相反的。
公鑰和私鑰是通過一種算法得到的一個密鑰對(即一個公鑰和一個私鑰),將其中的一個向外界公開,稱為公鑰;另一個自己保留,稱為私鑰。通過這種算法得到的密鑰對能保證在世界范圍內是唯一的。
使用這個密鑰對的時候,如果用其中一個密鑰加密一段數據,必須用另一個密鑰解密。比如用公鑰加密數據就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。
密鑰分類
密鑰分為兩種:對稱密鑰與非對稱密鑰
對稱密鑰加密,又稱私鑰加密或會話密鑰加密算法,即信息的發送方和接收方使用同一個密鑰去加密和解密數據。它的最大優勢是加/解密速度快,適合於對大數據量進行加密,但密鑰管理困難。
非對稱密鑰加密系統,又稱公鑰密鑰加密。它需要使用不同的密鑰來分別完成加密和解密操作,一個公開發布,即公開密鑰,另一個由用戶自己秘密保存,即私用密鑰。信息發送者用公開密鑰去加密,而信息接收者則用私用密鑰去解密。公鑰機制靈活,但加密和解密速度卻比對稱密鑰加密慢得多。
所以在實際的應用中,人們通常將兩者結合在一起使用,例如,對稱密鑰加密系統用於存儲大量數據信息,而公開密鑰加密系統則用於加密密鑰。
/*密鑰指的是私鑰或者公鑰—>密鑰=私鑰/公鑰;
密鑰對,針對的是非對稱加密—>密鑰對=私鑰+公鑰
這樣的話,整個思路就清晰了*/
既然是加密,肯定是不希望別人知道我的消息,所以只要我才能解密
所以得出,公鑰負責加密,私鑰負責解密,
同理,既然是簽名,那肯定是不希望有人冒充我發消息,只有我才能發布這個簽名,
所以得出,私鑰負責簽名,公鑰負責驗證.
/*這些是個人網上摘錄並總結的*/
這只是大概說了作用,具體說來,涉及到密鑰相關的東西。密鑰有公鑰和私鑰之分。
那么這里一共有兩組四個密鑰:A的公鑰(PUB_A),A的私鑰(PRI_A);B的公鑰(PUB_B),B的私鑰(PRI_B)。
公鑰一般用來加密,私鑰用來簽名。
通常公鑰是公開出去的,但是私鑰只能自己私密持有。
公鑰和私鑰唯一對應,用某個公鑰簽名過得內容只能用對應的私鑰才能解簽驗證;同樣用某個私鑰加密的內容只能用對應的公鑰才能解密。
這時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讀取。
總結:公鑰和私鑰是成對的,它們互相解密(密鑰指公鑰或私鑰,密鑰對指公鑰加私鑰)。
公鑰和私鑰都可以加密和解密
私鑰數字簽名,公鑰驗證。
(如下圖)
這個文本應該是寫的比較詳細的!后來我又補上去的這個圖就能說明一切了
RSA加密/解密和簽名/驗簽過程理解:https://www.jianshu.com/p/8dc4a5f64e06
————————————————
版權聲明:本文為CSDN博主「慕尚魚魚」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41586280/article/details/82669840