SSH加密密碼中的非對稱式密碼學

轉 wiki

https://zh.wikipedia.org/zh-cn/公開密鑰加密

公開密鑰密碼學

(英語:Public-key cryptography),也稱為非對稱式密碼學(英語:asymmetric cryptography),是密碼學的一種算法,它需要兩個密鑰,一個是公開密鑰,另一個是私有密鑰;一個用作加密,另一個則用作解密。使用其中一個密鑰把明文加密后所得的密文,只能用相對應的另一個密鑰才能解密得到原本的明文;甚至連最初用來加密的密鑰也不能用作解密。由于加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;不同于加密和解密都使用同一個密鑰的對稱加密。雖然兩個密鑰在數學上相關,但如果知道了其中一個,并不能憑此計算出另外一個;因此其中一個可以公開,稱為公鑰,任意向外發布;不公開的密鑰為私鑰,必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供,也不會透露給被信任的要通信的另一方。

加密

非對稱加密往往需要密碼學安全偽隨機數生成器的協助來產生一對密鑰,其中一個可以隨便公開,稱為公鑰;另一個不公開,稱為私鑰,必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供。
如果任何人使用公鑰加密明文,得到的密文可以透過不安全的途徑(如網絡)發送,只有對應的私鑰持有者才可以解密得到明文;其他人即使從網絡上竊取到密文及加密公鑰,也無法(在數以年計的合理時間內)解密得出明文。典型例子是在網絡銀行或購物網站上,因為客戶需要輸入敏感消息,瀏覽器連接時使用網站服務器提供的公鑰加密并上傳數據,可保證只有信任的網站服務器才能解密得知消息,不必擔心敏感個人信息因為在網絡上傳送而被竊取。

在現實世界上可作比擬的例子是,一個傳統保管箱,開門和關門都是使用同一條鑰匙,這是對稱加密;而一個公開的郵箱,投遞口是任何人都可以寄信進去的,這可視為公鑰;而只有信箱主人擁有鑰匙可以打開信箱,這就視為私鑰。

加密過程

在非對稱加密中,愛麗絲使用鮑伯的公鑰加密明文,得到密文,而只有鮑伯因為持有私鑰才可以解密,得到明文。
在數學上,讓我們使用典型的愛麗絲與鮑伯假設來解釋:
https://zh.wikipedia.org/zh-cn/公開密鑰加密

與對稱密碼學的比較

對稱密鑰加密牽涉到密鑰管理的問題,尤其是密鑰交換,它需要作者和讀者在通信之前先透過另一個安全的渠道交換共享的密鑰,才可以安全地把密文透過不安全的渠道發送;對稱密鑰一旦被竊,其所作的加密將即時失效;而在互聯網,如果通信雙方分隔異地而素未謀面,則對稱加密事先所需要的“安全渠道”變得不可行;非對稱加密則容許加密公鑰隨便散布,解密的私鑰不發往任何用戶,只在單方保管;如此,即使公鑰在網上被截獲,如果沒有與其匹配的私鑰,也無法解密,極為適合在互聯網上使用。

另一方面,公鑰解密的特性可以形成數字簽名,使數據和文件受到保護并可信賴;如果公鑰透過數字證書認證機構簽授成為電子證書,更可作為數字身份的認證,這都是對稱密鑰加密無法實現的。

不過,公鑰加密在在計算上相當復雜,性能欠佳、遠遠不比對稱加密;因此,在一般實際情況下,往往通過公鑰加密來隨機創建臨時的對稱秘鑰,亦即對話鍵,然后才通過對稱加密來傳輸大量、主體的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382463.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 學習筆記 多表查詢02

把一張表 想象成兩張表,進行多表查詢 舉例: 查詢 所有員工的 姓名 以及 其 上級姓名 select s1.stname, s2.stname from staff as s1, staff as s2 where s1.stmgr s2.stid;查詢 員工李巖的 上級姓名 select s1.stname, s2.stname from staff as s1…

Mac Redis安裝入門教程

redis安裝(mac) brew install redis 如果需要后臺運行 redis 服務,使用命令 brew services start redis 如果不需要后臺服務,則使用命令 redis-server /usr/local/etc/redis.conf 啟動redis服務 執行以下命令 /usr/local/bin…

Shell 腳本基礎學習

查詢手冊 菜鳥教程 for循環和seq的使用 echo "method 1" for i in seq 1 10; doecho $i; doneecho "method 2" for i in {1..10} doecho $i; doneecho "method 3" for i in seq 1 2 10; doecho $i; done進入目錄創建文件重定向內容 cd Test …

mysql 學習筆記15 子查詢

子查詢定義&#xff1a; 單上子查詢舉例&#xff1a; 顯示與 員工 關平 同一部門的員工&#xff0c; 但不包括關平 select * from staff where staff.stdepno (select staff.stdepno from staff where stname關平) and staff.stname<> 關平 ;多行子查詢舉例&#xff…

shell自學筆記

文章目錄重定向數值比較邏輯操作符使用范圍關于文件判斷測試表達式test [] [[]] (())的區別sed教程AWK教程重定向 0表示標準輸入 1表示標準輸出 2表示標準錯誤輸出 默認為標準輸出重定向&#xff0c;與 1> 相同 2>&1 意思是把 標準錯誤輸出 重定向到 標準輸出. &…

ffmpeg簡單使用小記

1. 使用ffmpeg 進行普通切片&#xff08;ts&#xff09;操作 .\ffmpeg.exe -i a.mp4 -y -f hls -c copy -hls_time 10 .\s.m3u82. 使用ffmpeg 對視頻進行設置旋轉參數為0 .\ffmpeg.exe -i a.mp4 -metadata:s:v:0 rotate0 -c copy outputfile.mp43. 使用文件對視頻進行加密 .\…

python3安裝教程配置配置阿里云

配置全新阿里云 Linux iz2ze0ajic0vbvwnjhw2bwz 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 安裝依賴包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tar.xz 新建一個文件夾存放python3 mkdir /u…

python 使用requests模塊進行 視頻文件的下載

公司項目需要下載一批視頻文件&#xff0c; 格式是mp4和mkv的&#xff0c;就借助request模塊進行了下載&#xff0c;前提是源服務器返回文件的大小&#xff0c;以及可以接受 請求頭headers中帶有Range參數 以下是下載邏輯&#xff1a; resp requests.head(urlreal_video_url)…

Git的多人協作和分支處理測試

首先配置ssh密鑰 克隆項目 配置兩臺主機&#xff08;一臺本地mac&#xff0c;一臺云服務器&#xff09;通過這樣的方式模擬多人開發。 創建分支 [root ~/Git_test_多人協作和沖突合并/branch_test]$ ls README.md [root ~/Git_test_多人協作和沖突合并/branch_test]$ git b…

python 碎片整理 threading模塊小計

threading模塊中&#xff0c; start()與run()方法的區別 threading.start() 方法是開啟一個線程 threading.run() 方法則是普通的函數調用

git教程目錄

git入門教程 PyCharm和git安裝教程 Git的多人協作和分支處理測試

msyql 禁止遠程訪問

1. use mysql 2. select host , user from user; 查看用戶 與 對應的host 3. 將 host 中是 %的改為 localhost&#xff0c; 酌情也可以其他用戶 的host限制為localhost update user set host "localhost" where user "root" and host "%" 4. …

mysql索引回表

先索引掃描&#xff0c;再通過ID去取索引中未能提供的數據&#xff0c;即為回表。 建表 mysql> create table T( id int primary key, k int not null, name varchar(16), index (k))engineInnoDB;如果語句是 select * from T where ID500&#xff0c;即主鍵查詢方式&am…

C++ 執行cmd命令 并獲取輸出

這是參考別人的 &#xff0c;具體來源忘了&#xff0c;唉&#xff0c;等想起來一定補上出處 頭文件 PipeCmd.h #ifndef _PIPE_CMD_H_ #define _PIPE_CMD_H_#include <Windows.h>// 執行 cmd 命令, 并獲取執行結果數據 BOOL PipeCmd(char *pszCmd, char *pszResultBuffe…

iterm2 保存阿里云登陸并防止斷開連接

commando edit profiles新增一個頁面 添加命令 ssh -A -p 22 -o ServerAliveInterval60 rootIP

QString中包含中文的時候, 轉為char *

轉載自 https://blog.csdn.net/mihang2/article/details/39026865 QString中包含中文的時候&#xff0c; 轉為char * void FileEncWidget::QString2ANSI(QString text, char **pOut) {std::wstring wIn text.toStdWString();char *pcstr (char *)malloc(sizeof(char)*(2 * w…

brew安裝

官網&#xff1a;http://brew.sh/ 安裝軟件&#xff1a;brew install 軟件名&#xff0c;例&#xff1a;brew install wget搜索軟件&#xff1a;brew search 軟件名&#xff0c;例&#xff1a;brew search wget卸載軟件&#xff1a;brew uninstall 軟件名&#xff0c;例&#…

關于異步IO模型的學習

看到兩篇不錯的文章&#xff0c;轉載了&#xff1a; https://www.cnblogs.com/fanzhidongyzby/p/4098546.html https://www.cnblogs.com/aspirant/p/9166944.html

centos 無法連接網絡

最小化安裝&#xff0c;沒有ifconfig默認沒法聯網 cd /etc/sysconfig/network-scripts/ sudo vi ifcfg-en33 也有可能是其他后綴 找到ONBOOTno service network restart 然后yum install net-tools

C++實現utf8和gbk編碼字符串互相轉換

不同系統或者服務器之間消息傳遞經常遇到編碼轉換問題&#xff0c;這里用C實現了一個輕量的gbk和utf8互相轉換&#xff0c;可跨平臺使用。&#xff08;重量級的可以用libiconv庫&#xff09; 在windows下用<windows.h>頭文件里的函數進行多字節和寬字符轉換&#xff0c;…