金鑰,私鑰,公鑰的區分
首先明確幾個基本概念:
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讀取。
總結:公鑰和私鑰是成對的,它們互相解密(金鑰指公鑰或私鑰,金鑰對指公鑰加私鑰)。
公鑰和私鑰都可以加密和解密
私鑰數字簽名,公鑰驗證。
(如下圖)
這個文字應該是寫的比較詳細的!後來我又補上去的這個圖就能說明一切了
chibohandong
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026609/viewspace-2938060/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 公鑰私鑰
- SSH-keygen rsa 金鑰對根據私鑰生成公鑰
- SSH 公鑰私鑰的生成管理
- openSSL生成公鑰和私鑰
- php使用openssl生成公鑰私鑰PHP
- 私鑰與公鑰有何不同?
- 使用openssl生成rsa公鑰和私鑰
- OpenSSL 公鑰私鑰加解密封裝解密封裝
- 蘋果ios簽名的公鑰與私鑰蘋果iOS
- Mac 使用openssl生成RSA公鑰和私鑰Mac
- 從Java金鑰庫讀取輸出私鑰Java
- C# Rsa加密(私鑰加密、公鑰解密、金鑰格式轉換、支援超大長度分段加密)C#加密解密
- 區塊鏈之比特幣的私鑰,公鑰和地址是什麼?區塊鏈比特幣
- 支付介面教程——公鑰與私鑰,雙鑰加密和數字簽名加密
- C#和JAVA的RSA金鑰、公鑰轉換C#Java
- 完成ssh無密碼的驗證,採用公鑰、私鑰密碼
- office 2010 金鑰 office 2010永久的金鑰
- 非對稱加密演算法RSA中的公鑰和私鑰加密演算法
- 使用公鑰/私鑰對設定免密的 Linux 登入方式Linux
- 使用公鑰和私鑰實現LINUX下免密登入Linux
- 公鑰私鑰gitee都不行,新手小白破局(windows憑據)GiteeWindows
- TLS、SSL、CA 證書、公鑰、私鑰。。。今天捋一捋!TLS
- 私鑰和公鑰到底是誰來加密、誰來解密?加密解密
- 公鑰基礎設施和密碼學中的私鑰的角色密碼學
- 【韭菜幣讀】用Emoji科普公鑰與私鑰的基本原理
- RSA公開金鑰系統
- vmware金鑰最新版 vmware金鑰大全
- bitlocker如何恢復金鑰 bitlocker恢復金鑰的方法
- 3.2 公開金鑰演算法演算法
- server2003安裝金鑰 server金鑰序列號Server
- office產品金鑰大全 office產品金鑰分享
- 本地金鑰的安全
- vs2015金鑰專業版企業版金鑰大全 visual studio產品金鑰2015
- bandizip註冊產品金鑰 bandizip金鑰使用步驟
- 區塊鏈應用的金鑰管理區塊鏈
- 橢圓曲線加密演算法中公鑰與私鑰互換性分析加密演算法
- 生成 Git 公鑰Git
- 【ubuntu】金鑰儲存在過時的 trusted.gpg 金鑰環中UbuntuRust