1. 程式人生 > >簽名,驗籤的理解(轉)

簽名,驗籤的理解(轉)

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

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

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

 

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

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

 

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

公鑰加密,私鑰解密。

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

 

舉例

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

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

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

例子和圖出自《網路安全基礎 應用與標準第二版》

 

RSA演算法

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

相關推薦

簽名理解

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

簽名理解

  一、公鑰加密 假設一下,我找了兩個數字,一個是1,一個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然後我告訴大家,1是我的公鑰。 我有一個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用數字2,就是我的私

Vue2.0 探索之路——生命周期和鉤子函數的一些理解

head chrom 路由 技術分享 defined 修改 疑問 reat 有時 前言 在使用vue一個多禮拜後,感覺現在還停留在初級階段,雖然知道怎麽和後端做數據交互,但是對於mounted這個掛載還不是很清楚的。放大之,對vue的生命周期不甚了解。只知道簡單的使用,而不

數據庫水平切分的實現原理解析——分庫分表主從集群負載均衡器

支付 讀取 dba 我們 課題研究 穩定性 存在 use 根據 第1章 引言 隨著互聯網應用的廣泛普及,海量數據的存儲和訪問成為了系統設計的瓶頸問題。對於一個大型的互聯網應用,每天幾十億的PV無疑對數據庫造成了相當高的負載。對於系統的穩定性和擴展性造成了極大的問題。通過數

矩陣乘法的理解

導致 ebr tle 就會 ice 大學 img 很多 所有 大多數人在高中,或者大學低年級,都上過一門課《線性代數》。這門課其實是教矩陣。 剛學的時候,還蠻簡單的,矩陣加法就是相同位置的數字加一下。 矩陣減法也類似。 矩陣乘以一個常數,就是所有位置都乘以這個數。

OpenCV中對Mat裏面depth,dims,channels,step,data,elemSize和數據地址計算的理解

ima 忽略 learning note 數組 進行 每一個 ber 初始 cv::Matdepth/dims/channels/step/data/elemSizeThe class Mat represents an n-dimensional dense numeri

Spring中AOP的一個通俗易懂的理解

學會 事物 nbsp 連接 新的 之前 天都 這不 proxy 這是看到的一個最易懂得AOP簡介了,適合初學者理解。 轉自:http://www.verydemo.com/demo_c143_i20837.html 1.我所知道的aop   初看aop,上來就是一大堆術語,

Java中泛型T和Class<T>以及Class<?>的理解

tcl ota 特定 類型 基本 ext pla enum extend 註意:class是java的關鍵字, 在聲明Java類時使用; Class類的實例表示Java應用運行時的類(class ans enum)或接口(interface and annotatio

利用ajax異步校驗證碼

left 獲取 track eth tco lds dsm sta source 利用ajax異步校驗驗證碼示例結果如圖所示具體步驟如下:step1:jsp頁面及js腳本[html] view plain copy print?<%@page pageEncoding

python 模擬知乎登錄包含驗證碼

mozilla log 5.0 color att pos head one 成功 #!/usr/bin/env python3 # -*- coding: utf-8 -*- ‘‘‘ Required - requests (必須) - pillow (可選) Info

對Spring框架的理解

體系 工廠方法 面向對象編程 整合 控制 應用 aop 低耦合 ati ① spring框架是一個開源而輕量級的框架,是一個IOC和AOP容器 ② spring的核心就是控制反轉(IOC)和面向切面編程(AOP) ③ 控制反轉(IOC):是面向對象編程中的一種設計原則,

Spring-Mybatis --- 配置SqlSessionFactoryBean整合Spring-Mybatis

ESS 註意 gis 不用 resultmap 文件中 編寫 eal 應用程序 要利用Mybatis首先是需要導入mybatis-x.x.x.jar,其次,要整合Spring和Mybatis需要導入mybatis-spring-x.x.x.jar。   JAR : myba

mysql給root開啟遠程訪問權限修改root密碼

ear ima update -- odex tool number data- ant 1.MySql-Server 出於安全方面考慮只允許本機(localhost, 127.0.0.1)來連接訪問. 這對於 Web-Server 與 MySql-Server 都在

H5網頁適配 iPhoneX就是這麼簡單

iPhoneX 取消了物理按鍵,改成底部小黑條,這一改動導致網頁出現了比較尷尬的螢幕適配問題。對於網頁而言,頂部(劉海部位)的適配問題瀏覽器已經做了處理,所以我們只需要關注底部與小黑條的適配問題即可(即常見的吸底導航、返回頂部等各種相對底部 fixed 定位的元素)。筆者通過查閱了一些官方文件,以及結合實際專

齊次座標的理解

齊次座標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用於進行仿射(線性)幾何變換。 對於一個向量v以及基oabc,可以找到一組座標(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1) 而對於一個點p,則可以找到一組座標

php api介面數字簽名

<?php //說明:第三方請求引數中,需要在平臺申請帳號,生成一個appid,每個appid對應一個appserect,請求如下: $param = array(   'appid'=>'137876891',   'name'=>'張三',   'mobile'=>'1389*

阿里員工都是這樣排查Java問題的附工具單

平時的工作中經常碰到很多疑難問題的處理,在解決問題的同時,有一些工具起到了相當大的作用,在此書寫下來,一是作為筆記,可以讓自己後續忘記了可快速翻閱,二是分享,希望看到此文的同學們可以拿出自己日常覺得幫助很大的工具,大家一起進步。 Linux命令類 tail 最常用的tail -f

對TCP協議握手的理解

向上 重新啟動 應該 開始 不發送 開發 釋放 還要 knowledge 目錄: 31.Tcp握手的一些問題? 21.Tcp三次握手及SYN攻擊; 四次握手? 為什麽建立連接是三次握手,而關閉連接卻是四次揮手? 13.TCP釋放連接四次握手 12.TCP建立連接三次握

python3對k-mean演算法的理解

    1.隨機選取k個質心(k值取決於你想聚成幾類)    random.sample(dataSet, k)  k你是想聚類的個數 dataset是資料集合 是陣列    2.dataSet 取出一條資料 然後分別與centroidList中的k的值進行歐氏距離

SpringAop的簡單理解

AOP AOP(Aspect Oriented Programming),即面向切面程式設計,可以說是OOP(Object Oriented Programming,面向物件程式設計)的補充和完善。OOP引入封裝、繼承、多型等概念來建立一種物件層次結構,用於模擬公共行為的一個集合。不過OO