導航:首頁 > 文檔加密 > 公鑰加密私鑰解密

公鑰加密私鑰解密

發布時間:2022-02-14 18:17:17

『壹』 怎樣實現對私鑰(公鑰)進行解密

要實現安全登錄,可以採用下面三種方法,一種基於非對稱加密演算法,一種基於對稱加密演算法,最後一種基於散列演算法。下面我們來分別討論這三種方法。
非對稱加密演算法中,目前最常用的是 RSA 演算法和 ECC(橢圓曲線加密)演算法。要採用非對稱加密演算法實現安全登錄的話,首先需要在客戶端向伺服器端請求登錄頁面時,伺服器生成公鑰和私鑰,然後將公鑰隨登錄頁面一起傳遞給客戶端瀏覽器,當用戶輸入完用戶名密碼點擊登錄時,登錄頁面中的 JavaScript 調用非對稱加密演算法對用戶名和密碼用用公鑰進行加密。然後再提交到伺服器端,伺服器端利用私鑰進行解密,再跟資料庫中的用戶名密碼進行比較,如果一致,則登錄成功,否則登錄失敗。
看上去很簡單,但是這里有這樣幾個問題。目前 RSA 演算法中,1024-2048 位的密鑰被認為是安全的。如果密鑰長度小於這個長度,則認為可以被破解。但這樣的長度超過了程序設計語言本身所允許的數字運算范圍,需要通過模擬來實現大數運算。而在 Web 系統的客戶端,如果通過 JavaScript 來模擬大數運行的話,效率將會是很低的,因此要在客戶端採用這樣的密鑰來加密數據的話,許多瀏覽器會發出執行時間過長,停止運行的警告。然而,解密或者密鑰生成的時間相對於加密來說要更長。雖然解密和密鑰生成是在伺服器端執行的,但是如果伺服器端是 PHP、ASP 這樣的腳本語言的話,它們也將很難勝任這樣的工作。ECC 演算法的密鑰長度要求比 RSA 演算法要低一些,ECC 演算法中 160 位的密鑰長度被認為與 RSA 演算法中 1024 位的密鑰長度的安全性是等價的。雖然仍然要涉及的模擬大數運算,但 ECC 演算法的密鑰長度的運算量還算是可以接受的,但是 ECC 演算法比 RSA 演算法要復雜的多,因此實現起來也很困難。
對稱加密演算法比非對稱加密演算法要快得多,但是對稱加密演算法需要數據發送方和接受方共用一個密鑰,密鑰是不能通過不安全的網路直接傳遞的,否則密鑰和加密以後的數據如果同時監聽到的話,入侵者就可以直接利用監聽到的密鑰來對加密後的信息進行解密了。
那是不是就不能通過對稱加密演算法實現安全登錄呢?其實只要通過密鑰交換演算法就可以實現安全登錄了,常用的密鑰交換演算法是 Diffie-Hellman 密鑰交換演算法。我們可以這樣來實現密鑰的安全傳遞,首先在客戶端向伺服器端請求登錄頁面時,伺服器端生成一個大素數 p,它的本原根 g,另外生成一個隨機數 Xa,然後計算出 Ya = gXa mod p,將 p、g、Ya 連同登錄頁面一起發送給客戶端,然後客戶端也生成一個隨機數 Xb,計算 Yb = gXb mod p,然後再計算 K = YaXb mod p,現在 K 就是密鑰,接下來就可以用 K 作密鑰,用對稱加密演算法對用戶輸入進行加密了,然後將加密後的信息連同計算出來的 Yb 一同發送給伺服器端,伺服器端計算 K = YbXa mod p,這樣就可以得到跟客戶端相同的密鑰 K 了,最後用客戶端加密演算法的相應解密演算法,就可以在伺服器端將加密信息進行解密了,信息解密以後進行比較,一致則登錄成功,否則登錄失敗。需要注意的時候,這里伺服器端生成的隨機數 Xa 和 客戶端生成的隨機數 Xb 都不傳遞給對方。傳遞的數據只有 p、g、Ya、Yb 和加密後的數據。
但是如果我們不採用加密演算法而採用散列演算法對登錄密碼進行處理的話,可以避免被直接解密出原文,但是如果直接採用 MD5 或者 SHA1 來對登錄密碼進行處理後提交的話,一旦入侵者監聽到散列後的密碼,則不需要解密出原文,直接將監聽到的數據提交給伺服器,就可以實現入侵的目的了。而且,目前 MD5 演算法已被破解,SHA1 演算法則被證明從理論上可破解,就算採用離線碰撞,也可以找出與原密碼等價的密碼來。所以直接採用 MD5 或者 SHA1 來對密碼進行散列處理也是不可行的。
但是如果在散列演算法中加入了密鑰,情況就不一樣了。hmac 演算法正好作了這樣的事情,下面我們來看看如何用 hmac 演算法實現安全登錄。首先在客戶端向伺服器端請求登錄頁面時,伺服器端生成一個隨機字元串,連同登錄頁面一同發送給客戶端瀏覽器,當用戶輸入完用戶名密碼後,將密碼採用 MD5 或者 SHA1 來生成散列值作為密鑰,伺服器端發送來的隨機字元串作為消息數據,進行 hmac 運算。然後將結果提交給伺服器。之所以要對用戶輸入的密碼進行散列後再作為密鑰,而不是直接作為密鑰,是為了保證密鑰足夠長,而又不會太長。伺服器端接受到客戶端提交的數據後,將保存在伺服器端的隨機字元串和用戶密碼進行相同的運算,然後進行比較,如果結果一致,則認為登錄成功,否則登錄失敗。當然如果不用 hmac 演算法,直接將密碼和伺服器端生成的隨機數合並以後再做 MD5 或者 SHA1,應該也是可以的。
這里客戶端每次請求時伺服器端發送的隨機字元串都是不同的,因此即使入侵者監聽到了這個隨機字元串和加密後的提交的數據,它也無法再次提交相同的數據通過驗證。而且通過監聽到的數據也無法計算出密鑰,所以也就無法偽造登錄信息了。
對稱和非對稱加密演算法不僅適用於登錄驗證,還適合用於最初的密碼設置和以後密碼修改的過程中,而散列演算法僅適用於登錄驗證。但是散列演算法要比對稱和非對稱加密演算法效率高。

『貳』 先用發送方私鑰加密再用接收方公鑰加密,然後如何解密

加密演算法

加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES和IDEA等。美國國家標准局倡導的AES即將作為新標准取代DES。

不對稱加密演算法不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。

不可逆加密演算法 不可逆加密演算法的特徵是加密過程中不需要使用密鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的「密碼」也就是輸入的明文。不可逆加密演算法不存在密鑰保管和分發問題,非常適合在分布式網路系統上使用,但因加密計算復雜,工作量相當繁重,通常只在數據量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5演算法和由美國國家標准局建議的不可逆加密標准SHS(Secure Hash Standard:安全雜亂信息標准)等。

加密技術

加密演算法是加密技術的基礎,任何一種成熟的加密技術都是建立多種加密演算法組合,或者加密演算法和其他應用軟體有機結合的基礎之上的。下面我們介紹幾種在計算機網路應用領域廣泛應用的加密技術。

非否認(Non-repudiation)技術 該技術的核心是不對稱加密演算法的公鑰技術,通過產生一個與用戶認證數據有關的數字簽名來完成。當用戶執行某一交易時,這種簽名能夠保證用戶今後無法否認該交易發生的事實。由於非否認技術的操作過程簡單,而且直接包含在用戶的某類正常的電子交易中,因而成為當前用戶進行電子商務、取得商務信任的重要保證。

PGP(Pretty Good Privacy)技術 PGP技術是一個基於不對稱加密演算法RSA公鑰體系的郵件加密技術,也是一種操作簡單、使用方便、普及程度較高的加密軟體。PGP技術不但可以對電子郵件加密,防止非授權者閱讀信件;還能對電子郵件附加數字簽名,使收信人能明確了解發信人的真實身份;也可以在不需要通過任何保密渠道傳遞密鑰的情況下,使人們安全地進行保密通信。PGP技術創造性地把RSA不對稱加密演算法的方便性和傳統加密體系結合起來,在數字簽名和密鑰認證管理機制方面採用了無縫結合的巧妙設計,使其幾乎成為最為流行的公鑰加密軟體包。

數字簽名(Digital Signature)技術 數字簽名技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據校驗和或其他與數據內容有關的變數進行加密處理,完成對數據的合法「簽名」,數據接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對數據完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上有保證。在公鑰與私鑰管理方面,數字簽名應用與加密郵件PGP技術正好相反。在數字簽名應用中,發送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。

PKI(Public Key Infrastructure)技術 PKI技術是一種以不對稱加密技術為核心、可以為網路提供安全服務的公鑰基礎設施。PKI技術最初主要應用在Internet環境中,為復雜的互聯網系統提供統一的身份認證、數據加密和完整性保障機制。由於PKI技術在網路安全領域所表現出的巨大優勢,因而受到銀行、證券、政府等核心應用系統的青睞。PKI技術既是信息安全技術的核心,也是電子商務的關鍵和基礎技術。由於通過網路進行的電子商務、電子政務等活動缺少物理接觸,因而使得利用電子方式驗證信任關系變得至關重要,PKI技術恰好能夠有效解決電子商務應用中的機密性、真實性、完整性、不可否認性和存取控制等安全問題。一個實用的PKI體系還必須充分考慮互操作性和可擴展性。PKI體系所包含的認證中心(CA)、注冊中心(RA)、策略管理、密鑰與證書管理、密鑰備份與恢復、撤銷系統等功能模塊應該有機地結合在一起。

加密的未來趨勢

盡管雙鑰密碼體制比單鑰密碼體制更為可靠,但由於計算過於復雜,雙鑰密碼體制在進行大信息量通信時,加密速率僅為單鑰體制的1/100,甚至是 1/1000。正是由於不同體制的加密演算法各有所長,所以在今後相當長的一段時期內,各類加密體制將會共同發展。而在由IBM等公司於1996年聯合推出的用於電子商務的協議標准SET(Secure Electronic Transaction)中和1992年由多國聯合開發的PGP技術中,均採用了包含單鑰密碼、雙鑰密碼、單向雜湊演算法和隨機數生成演算法在內的混合密碼系統的動向來看,這似乎從一個側面展示了今後密碼技術應用的未來。

在單鑰密碼領域,一次一密被認為是最為可靠的機制,但是由於流密碼體制中的密鑰流生成器在演算法上未能突破有限循環,故一直未被廣泛應用。如果找到一個在演算法上接近無限循環的密鑰流生成器,該體制將會有一個質的飛躍。近年來,混沌學理論的研究給在這一方向產生突破帶來了曙光。此外,充滿生氣的量子密碼被認為是一個潛在的發展方向,因為它是基於光學和量子力學理論的。該理論對於在光纖通信中加強信息安全、對付擁有量子計算能力的破譯無疑是一種理想的解決方法。

由於電子商務等民用系統的應用需求,認證加密演算法也將有較大發展。此外,在傳統密碼體制中,還將會產生類似於IDEA這樣的新成員,新成員的一個主要特徵就是在演算法上有創新和突破,而不僅僅是對傳統演算法進行修正或改進。密碼學是一個正在不斷發展的年輕學科,任何未被認識的加/解密機制都有可能在其中佔有一席之地。

目前,對信息系統或電子郵件的安全問題,還沒有一個非常有效的解決方案,其主要原因是由於互聯網固有的異構性,沒有一個單一的信任機構可以滿足互聯網全程異構性的所有需要,也沒有一個單一的協議能夠適用於互聯網全程異構性的所有情況。解決的辦法只有依靠軟體代理了,即採用軟體代理來自動管理用戶所持有的證書(即用戶所屬的信任結構)以及用戶所有的行為。每當用戶要發送一則消息或一封電子郵件時,代理就會自動與對方的代理協商,找出一個共同信任的機構或一個通用協議來進行通信。在互聯網環境中,下一代的安全信息系統會自動為用戶發送加密郵件,同樣當用戶要向某人發送電子郵件時,用戶的本地代理首先將與對方的代理交互,協商一個適合雙方的認證機構。當然,電子郵件也需要不同的技術支持,因為電子郵件不是端到端的通信,而是通過多個中間機構把電子郵件分程傳遞到各自的通信機器上,最後到達目的地。

『叄』 公鑰密碼裡面,如果一方用自己的私鑰加密,解密用自己的公鑰,公鑰不是公開的嗎任何人都可以解開

信息傳輸有兩條路徑,一是信息加密,二是身份認證,你說的這種只是身法認證環節,任何人擁有了你的公鑰,都能確認是「你」發出的(因為你使用自己的私鑰加密的,這個環節叫電子簽名)。
而具體的密文的加密是使用你的公鑰加密的,只有你的私鑰可解密,其它人沒有你的私鑰,雖然收到了消息,也知道是你發出的(即前面說的身份認證過程暢通無阻),但是沒法解密,因此無法知道具體信息內容。

『肆』 RSA的公鑰和私鑰到底哪個才是用來加密和哪個用來解密

其實公鑰和私鑰都可以用來加密或解密---只要能保證用A加密,就用B解密就行。至於A是公鑰還是私鑰,其實可以根據不同的用途而定。

例如說,如果你想把某個消息秘密的發給某人,那你就可以用他的公鑰加密。因為只有他知道他的私鑰,所以這消息也就只有他本人能解開,於是你就達到了你的目的。

但是如果你想發布一個公告,需要一個手段來證明這確實是你本人發的,而不是其他人冒名頂替的。那你可以在你的公告開頭或者結尾附上一段用你的私鑰加密的內容(例如說就是你公告正文的一段話),那所有其他人都可以用你的公鑰來解密,看看解出來的內容是不是相符的。如果是的話,那就說明這公告確實是你發的---因為只有你的公鑰才能解開你的私鑰加密的內容,而其他人是拿不到你的私鑰的。

最後再說一下數字簽名。
數字簽名無非就兩個目的:
證明這消息是你發的;
證明這消息內容確實是完整的---也就是沒有經過任何形式的篡改(包括替換、缺少、新增)。

其實,上面關於「公告」那段內容,已經證明了第一點:證明這消息是你發的。
那麼要做到第二點,也很簡單,就是把你公告的原文做一次哈希(md5或者sha1都行),然後用你的私鑰加密這段哈希作為簽名,並一起公布出去。當別人收到你的公告時,他可以用你的公鑰解密你的簽名,如果解密成功,並且解密出來的哈希值確實和你的公告原文一致,那麼他就證明了兩點:這消息確實是你發的,而且內容是完整的。

其實概念很簡單:

  1. 小明想秘密給小英發送消息

  2. 小英手裡有一個盒子(public key),這個盒子只有小英手裡的鑰匙(private key)才打得開

  3. 小英把盒子送給小明(分發公鑰)

  4. 小明寫好消息放進盒子里,鎖上盒子(公鑰加密)

  5. 小明把盒子寄給小英(密文傳輸)

  6. 小英用手裡的鑰匙打開盒子,得到小明的消息(私鑰解密)

  7. 假設小剛劫持了盒子,因為沒有小英的鑰匙,他也打不開

『伍』 JAVA公鑰加密,私鑰解密,該怎麼解決

就是一個演算法的問題演算法生成公鑰加密然後把用私鑰解密而已

『陸』 含有公鑰,能不能私鑰加密,公鑰解密

公鑰是公開的沒有錯,但是不是每個人都知道公鑰,你的公鑰只給你需要的人。有了公鑰確實可以解來密碼,但是加密文件你只發給需要的人,除非他們把文件公開,否則沒有加密文件,只知道公鑰沒有用的。反過來公鑰加密,只有你能解開,所以如果拿公鑰加密文件,你是唯一能解開密碼的人,這樣很安全的。

『柒』 什麼是公鑰加密和私鑰解密

補充一點:講的通俗點就是對所有的人來講是加密的,不可任意訪問的,但對於授權者和擁有者來講是沒有任何限制的。

『捌』 為什麼公鑰加密只能私鑰解密而不能公鑰解密

一個是簽名,一個是認證。倆功能不一樣。
另外,加解密一樣的東西,那被人知道了還怎麼保護數據。

『玖』 關於私鑰加密 公鑰解密

如果只是單方面採用非對稱性加密演算法,其實有兩種方式,用於不同用處.
第一種是簽名,使用私鑰加密,公鑰解密,用於讓所有公鑰所有者驗證私鑰所有者的身份並且用來防止私鑰所有者發布的內容被篡改.但是不用來保證內容不被他人獲得.
第二種是加密,用公鑰加密,私鑰解密,用於向公鑰所有者發布信息,這個信息可能被他人篡改,但是無法被他人獲得.
如果甲想給乙發一個安全的保密的數據,那麼應該甲乙各自有一個私鑰,甲先用乙的公鑰加密這段數據,再用自己的私鑰加密這段加密後的數據.最後再發給乙,這樣確保了內容即不會被讀取,也不會被篡改.

『拾』 在非對稱加密中如何實現公鑰加密,只有私鑰可以解密的原理

可以,公鑰和私鑰匙相對的,任何一個作為公鑰,則另一個就為私鑰

閱讀全文

與公鑰加密私鑰解密相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163