圖解公鑰與私鑰

来源:https://www.cnblogs.com/jiajialove/archive/2019/11/07/11810657.html
-Advertisement-
Play Games

在學習ssh時,一定有不少人對公鑰和私鑰產生過不解。在搜索公鑰跟私鑰的理解時,發現了這篇有趣的圖解小文章,與大家共用。 1. 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。 2. 鮑勃把公鑰送給他的朋友們 帕蒂、道格、蘇珊 每人一把。 3. 蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達 ...


在學習ssh時,一定有不少人對公鑰和私鑰產生過不解。在搜索公鑰跟私鑰的理解時,發現了這篇有趣的圖解小文章,與大家共用。

1. 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。
PubKey1

2. 鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。
PubKey2

3. 蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。
PubKey3

4. 鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不泄露,這封信就是安全的,即使落在別人手裡,也無法解密。
PubKey4

5. 鮑勃給蘇珊回信,決定採用"數字簽名"。他寫完後先用Hash函數,生成信件的摘要(digest)。
PubKey5

6. 然後,鮑勃使用私鑰,對這個摘要加密,生成"數字簽名"(signature)。
PubKey6

7. 鮑勃將這個簽名,附在信件下麵,一起發給蘇珊。
PubKey7

8. 蘇珊收信後,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。
PubKey8

9. 蘇珊再對信件本身使用Hash函數,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。
PubKey9

10. 複雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時,蘇珊實際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進行解密。
PubKey10

11. 後來,蘇珊感覺不對勁,發現自己無法確定公鑰是否真的屬於鮑勃。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱CA),為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關信息一起加密,生成"數字證書"(Digital Certificate)。
PubKey11

12. 鮑勃拿到數字證書以後,就可以放心了。以後再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。
PubKey12

13. 蘇珊收信後,用CA的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然後就能證明"數字簽名"是否真的是鮑勃簽的。
PubKey13

14. 下麵,我們看一個應用"數字證書"的實例:https協議。這個協議主要用於網頁加密。
PubKey14

15. 首先,客戶端向伺服器發出加密請求。
PubKey15

16. 伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起發送給客戶端。
PubKey16

17. 客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,查看解開數字證書的公鑰是否在列表之內。
PubKey17

18. 如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。
PubKey18

19. 如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告。
PubKey19

PubKey20

 翻譯自:http://www.youdzone.com/signature.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • 前幾天遇到一個關於el-table表格樣式的問題一直沒解決 因為在el-table-column加樣式並不生效所以更改起來比較麻煩 後來了看來element官方文檔和在一些關於此方面的博客,使用了一個比較笨的方法解決了問題 問題如下:我想要未開藥品的欄位的樣式為灰色 效果如下 解決方案如下: 首先在 ...
  • 1:CSS雪碧圖:CSS雪碧圖 即 CSS Sprites,也有人叫它CSS精靈圖。 2:雪碧圖的由來:一個網站的頁面需要大量的小圖片或者小圖標,但是大量的圖片如果放在伺服器上,每次當打開網站並且向伺服器發送請求,那麼請求的次數將大大增加。由此出現了雪碧圖的概念 3:用處:是一種CSS圖像合併技術, ...
  • 本次接著上次的來介紹版本控制系統,這個講到的將是Git與Github,說一下什麼是Git,什麼是GitHub?他們之間的關係是什麼? 1、Git 是代碼管理的工具 2、GitHub 是基於Git實現的代碼管理的平臺。 這樣就比較清楚兩個不同的作用了,Git更多的是在本地進行代碼的存儲和管理,而Git ...
  • 為了偽造一些儘量真實的假數據,也真是夠費勁的。上一篇筆記記錄了一下獲取一個隨機車輛牌照,這篇筆記記錄一下怎麼獲取一個隨機時間。這篇就不說那麼多廢話了,直接上代碼 在粘一下測試代碼 看一下測試結果 要不是不說點廢話,還真是夠短的……不過這篇沒有什麼疑問,所以到此就結束吧! 參考鏈接:javascrip ...
  • css 位移常用屬性 transform:translate(x,y); transform:translateX(); transform:translateY(); 旋轉屬性 2d旋轉: transform:rotate(); / 繞著中心點轉動 / transform:rotateX(); / ...
  • 起因 為什麼做這個東西,是突然間聽一後端同事說起 "Annie" 這個東西,發現這個東西下載視頻挺方便的,會自動爬取網頁中的視頻,然後整理成列表。發現用命令執行之後是下麵的樣子: 心裡琢磨了下,整一個界面玩一下吧。然後就做成下麵這個樣子了。 列表 下載列表 本文地址倉庫: "https://gith ...
  • 前幾天記錄了一下表單生成器(Form Builder)之表單數據存儲結構mongodb篇,之後便想著偽造一些數據。為什麼要偽造數據呢?說來慚愧,因為拖拉拽設計表單以及表單對應的列表的PC端和移動端該顯示哪些欄位並且是否支持搜索列印(即表單的列表配置)等一系列配置都還沒有做,還有就是前面只說了表單相關 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...