公鑰,私鑰和數字簽名

一、公鑰加密?
假設一下,我找了兩個數字,一個是1,一個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然后我告訴大家,1是我的公鑰。

我有一個文件,不能讓別人看,我就用1加密了。別人找到了這個文件,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用
數字2,就是我的私鑰,來解密。這樣我就可以保護數據了。

我的好朋友x用我的公鑰1加密了字符a,加密后成了b,放在網上。別人偷到了這個文件,但是別人解不開,因為別人不知道2就是我的私鑰,
只有我才能解密,解密后就得到a。這樣,我們就可以傳送加密的數據了。


?

二、私鑰簽名
如果我用私鑰加密一段數據(當然只有我可以用私鑰加密,因為只有我知道2是我的私鑰),結果所有的人都看到我的內容了,因為他們都知
道我的公鑰是1,那么這種加密有什么用處呢?

但是我的好朋友x說有人冒充我給他發信。怎么辦呢?我把我要發的信,內容是c,用我的私鑰2,加密,加密后的內容是d,發給x,再告訴他
解密看是不是c。他用我的公鑰1解密,發現果然是c。
這個時候,他會想到,能夠用我的公鑰解密的數據,必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認確實是我發的東西。
這樣我們就能確認發送方身份了。這個過程叫做數字簽名。當然具體的過程要稍微復雜一些。用私鑰來加密數據,用途就是數字簽名

?

總結:公鑰和私鑰是成對的,它們互相解密。

公鑰加密,私鑰解密。

私鑰數字簽名,公鑰驗證。

?

這些密碼學的概念容易被搞混淆,的確也情有可原。因為公鑰、私鑰、加密、認證這些都是較為復雜的問題,其概念不太容易理解,理解不透就容易產生各種似是而非的概念,為了讓大家對于密碼學有進一步的了解,這里我就詳細解說一下公鑰和私鑰的具體作用和使用方法。

  加密和認證

  首先我們需要區分加密和認證這兩個基本概念。

  加密是將數據資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內容,所以數據加密可以保護數據,防止監聽攻擊。其重點在于數據的安全性。身份認證是用來判斷某個身份的真實性,確認身份后,系統才可以依不同的身份給予不同的權限。其重點在于用戶的真實性。兩者的側重點是不同的。

  公鑰和私鑰

  其次我們還要了解公鑰和私鑰的概念和作用。

  在現代密碼體制中加密和解密是采用不同的密鑰(公開密鑰),也就是非對稱密鑰密碼系統,每個通信方均需要兩個密鑰,即公鑰和私鑰,這兩把密鑰可以互為加解密。公鑰是公開的,不需要保密,而私鑰是由個人自己持有,并且必須妥善保管和注意保密。

  公鑰私鑰的原則:

  1. 一個公鑰對應一個私鑰。
  2. 密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
  3. 如果用其中一個密鑰加密數據,則只有對應的那個密鑰才可以解密。
  4. 如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。

  非對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的,下面我就詳細講解一下兩者的區別。

  基于公開密鑰的加密過程

  比如有兩個用戶Alice和Bob,Alice想把一段明文通過雙鑰加密的技術發送給Bob,Bob有一對公鑰和私鑰,那么加密解密的過程如下:

  1. Bob將他的公開密鑰傳送給Alice。
  2. Alice用Bob的公開密鑰加密她的消息,然后傳送給Bob。
  3. Bob用他的私人密鑰解密Alice的消息。

  上面的過程可以用下圖表示,Alice使用Bob的公鑰進行加密,Bob用自己的私鑰進行解密。

  基于公開密鑰的認證過程

  身份認證和加密就不同了,主要用戶鑒別用戶的真偽。這里我們只要能夠鑒別一個用戶的私鑰是正確的,就可以鑒別這個用戶的真偽。

  還是Alice和Bob這兩個用戶,Alice想讓Bob知道自己是真實的Alice,而不是假冒的,因此Alice只要使用自己的私鑰對文件簽名發送給Bob,Bob使用Alice的公鑰對文件進行解密,如果可以解密成功,則證明Alice的私鑰是正確的,因而就完成了對Alice的身份鑒別。整個身份認證的過程如下:

  1. Alice用她的私人密鑰對文件加密,從而對文件簽名。
  2. Alice將簽名的文件傳送給Bob。
  3. Bob用Alice的公鑰解密文件,從而驗證簽名。

  上面的過程可以用下圖表示,Alice使用自己的私鑰加密,Bob用Alice的公鑰進行解密。

RSA算法

RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標準。RSA算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。

 1 我也剛學,有這樣一個例子給你看看,很有用:
 2 RSA算法概述如下: 
 3 找兩素數p和q 
 4 取n=p*q 
 5 取t=(p-1)*(q-1) 
 6 取任何一個數e,要求滿足e<t并且e與t互素(就是最大公因數為1) 
 7 取d*e%t==1 
 8 
 9 這樣最終得到三個數: n d e 
10 
11 設消息為數M (M <n) 
12 設c=(M**d)%n就得到了加密后的消息c 
13 設m=(c**e)%n則 m == M,從而完成對c的解密。 
14 注:**表示次方,上面兩式中的d和e可以互換。 
15 
16 在加密中: 
17 n d兩個數構成公鑰,可以告訴別人; 
18 n e兩個數構成私鑰,e自己保留,不讓任何人知道。 
19 給別人發送的信息使用e加密,只要別人能用d解開就證明信息是由你發送的,構成了簽名機制。 
20 別人給你發送信息時使用d加密,這樣只有擁有e的你能夠對其解密

而常用公鑰體制主要有兩個作用:加密信息和認證。由于內容,我把鏈接給你,你參考著看看……挺好理解的
http://hi.baidu.com/piao2007/blog/item/ae2ec4f881f73202d8f9fd57.html

轉載于:https://www.cnblogs.com/yanglang/p/10136845.html

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

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

相關文章

MySQL中的日志類型(二)-General query log

簡介 General query log記錄客戶端的連接和斷開&#xff0c;以及從客戶端發來的每一個SQL語句。 日志內容格式 General query log可以記錄在文件中&#xff0c;也可以記錄在表中&#xff0c;格式如下&#xff1a;在文件中會記錄時間、線程ID、命令類型以及執行的語句示例如下&a…

android wi-fi_如何在Android手機上查找3G或Wi-Fi速度

android wi-fiAre you curious about what kind of connection speed you are getting with your Android phone? Today we’ll take a look at how to easily check your Wi-Fi or 3G speeds with Speedtest.net’s Speed Test app. 您是否對Android手機的連接速度感到好奇&a…

vue引入全局less實現全局變量的控制

vue引入全局less1.設置全局樣式變量的好處&#xff1a;2.以less為例&#xff08;sass等同原理&#xff09;1.vue-cli2搭建的項目&#xff08;1&#xff09;2.vue-cli2搭建的項目&#xff08;2&#xff09;3.vue-cli3、vue-cli43.vue-cli2和vue-cli3的區別4.vue-cli3和vue-cli4的…

如何在eclipse中對項目進行重新編譯

有時由于eclipse異常關閉&#xff0c;當我們重啟Eclipse&#xff0c;在啟動項目時&#xff0c;會報錯&#xff0c;說&#xff1a;ClassNotFound類似的錯誤&#xff0c;引起這種問題的原因可能是由于&#xff0c;Eclipse異常關閉引起的。 解決&#xff1a;在一個項目中&#xff…

SQL 查詢數據庫中包含指定字符串的相關表和相關記錄

declare str varchar(100)set str我要找的 --要搜索的字符串declare s varchar(8000)declare tb cursor local forselect if exists(select 1 from [b.name] where [a.name] like %str%)print [b.name].[a.name]from syscolumns a join sysobjects b on a.idb.idwhere b.xtype…

如何在Gmail的圖片中插入超鏈接

Adding hyperlinks is an efficient way of getting your reader to the intended web page. Though it’s no secret that you can add hyperlinks to text, Gmail also lets you add hyperlinks to images in the body of the email. Here’s how to make it happen. 添加超鏈…

內聯元素居中

父元素&#xff1a; height:100px; line-height:100px; // 與高相同 text-align:center; 子元素: display:inline; vertical-align: middle; 適用圖片、文字 <div><div class"wrapper"><span>我是文字</span></div><div class&qu…

防止html標簽轉義

function htmlDecode ( str ) {var ele document.createElement(span);ele.innerHTML str;return ele.textContent;} 例如body下邊所有的p標簽都防止轉義&#xff1a; $.each($("body").find(p),function(){this.innerHTML htmlDecode(this.innerHTML);}); 轉載于…

新垣結衣自拍照_如何阻止自拍照出現在iPhone的自拍照專輯中

新垣結衣自拍照Khamosh PathakKhamosh PathakThe Photos app on your iPhone automatically populates all photos from the front-facing camera in the Selfies album. But what if you don’t want a photo to appear there? Here are a couple of solutions. iPhone上的“…

前端個人筆記

前端個人筆記1.vue項目安裝依賴/插件時忘記--save&#xff0c;再次install出問題并且沒有報錯。2.margin移動元素不顯示背景色3.新知識&#xff1a;media 條件樣式4.入坑&#xff1a;row和col不能分離&#xff0c;span24不能不寫5.聚焦實現滾動到指定元素1.vue項目安裝依賴/插件…

kernel中對文件的讀寫【學習筆記】【原創】

/*1. 頭文件 */ #include <linux/init.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/list.h> #include <linux/fs.h> #include <linux/uaccess.h>MODULE_PARM_DESC(iva…

ssm項目快速搭建(注解)-依賴

父層jar包版本控制&#xff0c;管理配置 <!-- 集中定義依賴版本號 --> <properties> <junit.version>4.12</junit.version> <spring.version>4.2.4.RELEASE</spring.version> <pagehelper.version>4.0.0<…

如何設置自定義任務欄圖標_如何為任何應用程序自定義Windows 7任務欄圖標

如何設置自定義任務欄圖標Would you like to change out the icons on your taskbar with a beautiful set of icons that all go together? Here’s how you can change out the random candy-colored icons for a stylish icon set of your choice. 您是否要用一組漂亮的圖…

給谷歌瀏覽器安裝vue調試工具:vue-devtools

安裝vue-devtools一、拉取項目二、install、build三、添加擴展四、使用舉例一、拉取項目 vue-devtools&#xff1a;git地址&#xff08;master分支&#xff09; 非master分支在build的時候會報錯。 二、install、build 1、打開cmd進入項目目錄&#xff0c;可以選擇npm/cnpm/…

如何找到Windows 7或8家庭組密碼?

So you’re about to setup your new Windows 7 PC into your Homegroup when you realized that you have no idea what the password is. How do you find it? It’s actually pretty simple, if you know where to look. 因此&#xff0c;當您意識到自己不知道密碼是什么時…

vue3.0、cli4項目引入element plus

element團隊為新版的 vue-cli4 準備了相應的 Element Plus 插件 安裝依賴 npm install element-plus --savemain.js全局引入&#xff0c;樣式文件需要單獨引入 import { createApp } from vue import ElementPlus from element-plus; import element-plus/lib/theme-chalk/in…

MySQL索引背后的數據結構及算法原理

title: MySQL索引背后的數據結構及算法原理 date: 2018-07-25 19:50:16 tags: mysql categories: mysql --- 本文轉載自http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL為研究對象&#xff0c;討論與數據庫索引相關的一些話題。特別需要說明…

[SDOI2015]約數個數和

Sol 首先有個結論\(\sum_{i1}^{m}\sum_{j1}^{n}d(i*j)\sum_{i1}^{m}\sum_{j1}^{n}\sum_{x|i}\sum_{y|i}[gcd(x,y)1]\) 證明&#xff1a;可以看po姐的博客 接著這個式子推\[ 原式\sum_{x1}^{n}\sum_{y1}^{m}([gcd(x, y)1] * \sum_{x|i}\sum_{y|i} 1)\\ \sum_{x1}^{n}\sum_{y1}^{…

使用mcBackup備份Windows 7 Media Center設置

If you’re a HTPC enthusiast and use Windows 7 Media Center, you probably have a lot of scheduled recordings and channel lineups you’d like to backup. Here we take a look at a simple tool that will allow you to do it easily. 如果您是HTPC愛好者并且使用Wind…

【CF961G】Partitions(第二類斯特林數)

【CF961G】Partitions&#xff08;第二類斯特林數&#xff09; 題面 CodeForces洛谷 題解 考慮每個數的貢獻&#xff0c;顯然每個數前面貢獻的系數都是一樣的。 枚舉當前數所在的集合大小&#xff0c;所以前面的系數\(p\)就是&#xff1a;\[\begin{aligned} p&\sum_{i1}^n{…