加密演算法
加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。
對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有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加密原理
RSA加密是一種非對稱加密。可以在不直接傳遞密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風險。是由一對密鑰來進行加解密的過程,分別稱為公鑰和私鑰。公鑰加密--私鑰解密,私鑰加密--公鑰解密
在 整數 中, 離散對數 是一種基於 同餘 運算和 原根 的一種 對數 運算。而在實數中對數的定義 log b a 是指對於給定的 a 和 b ,有一個數 x ,使得 b x = a 。相同地在任何群 G 中可為所有整數 k 定義一個冪數為 b K ,而 離散對數 log b a 是指使得 b K = a 的整數 k 。
當3為17的 原根 時,我們會發現一個規律
對 正整數 n,歐拉函數是小於或等於n的正整數中與n 互質 的數的數目(因此φ(1)=1)。有以下幾個特點
服務端根據生成一個隨機數15,根據 3 15 mod 17 計算出6,服務端將6傳遞給客戶端,客戶端生成一個隨機數13,根據 3 13 mod 17 計算出12後,將12再傳回給服務端,客戶端收到服務端傳遞的6後,根據 6 13 mod 17 計算出 10 ,服務端收到客戶端傳遞的12後,根據 12 15 mod 17 計算出 10 ,我們會發現我們通過 迪菲赫爾曼密鑰交換 將 10 進行了加密傳遞
說明:
安全性:
除了 公鑰 用到 n 和 e ,其餘的4個數字是 不公開 的(p1、p2、φ(n)、d)
目前破解RSA得到的方式如下:
缺點
RSA加密 效率不高 ,因為是純粹的數學演算法,大數據不適合RSA加密,所以我們在加密大數據的時候,我們先用 對稱加密 演算法加密大數據得到 KEY ,然後再用 RSA 加密 KEY ,再把大數據和KEY一起進行傳遞
因為Mac系統內置了OpenSSL(開源加密庫),所以我們開源直接在終端進行RSA加密解密
生成RSA私鑰,密鑰名為private.pem,密鑰長度為1024bit
因為在iOS中是無法使用 .pem 文件進行加密和解密的,需要進行下面幾個步驟
生成一個10年期限的crt證書
crt證書格式轉換成der證書
③ 理論分析和舉例說明RSA的加密和解密是互逆的
由於沒有辦法打出fai這個希臘字母 n的歐拉函數我用@(n)來表示
^ 代表冪的意思
e*d=1(mod @(n))
m為明文 c為密文
加密:c=m^e(mod n)
解密:m=c^d(mod n)
證明加密解密互逆也就是證明:
m=(m^e)^d(mod n) //把加密式子過程的c 帶到解密過程那個式子中
也就是證明 m=m^(e*d) (mod n)
因為 e*d=1(mod @(n)) 可以推導出 e*d=k*@(n)+1
所以m=m*(k*@(n)+1) (mod n)
也就可以寫出m=m*m^(k*@(n)) (mod n)
因為根據費馬定理 m^(@(n))=1 (mod n)
所以m^(k*@(n)) =1^k(mod n)=1(mod n)
m*m^(k*@(n)) (mod n)=m*1 (mod n)=m(mod n)證明就ok了
主要把握2點: 費馬定理
公私鑰關於@(n)互逆 就鬆鬆搞定
④ Rsa是什麼意思
RSA加密演算法是一種非對稱加密演算法。在公開密鑰加密和電子商業中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。
1973年,在英國政府通訊總部工作的數學家克利福德·柯克斯(Clifford Cocks)在一個內部文件中提出了一個相同的演算法,但他的發現被列入機密,一直到1997年才被發表。
(4)rsa是可逆的加密演算法嗎擴展閱讀
RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。
假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。 RSA 的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。人們已能分解多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定。
⑤ RSA是什麼意思
RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。
RSA的演算法涉及三個參數,n、e1、e2。
其中,n是兩個大質數p、q的積,n的二進製表示時所佔用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密鑰對。
RSA加解密的演算法完全相同,設A為明文,B為密文,則:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互換使用,即:
A=B^e2 mod n;B=A^e1 mod n;
補充回答:
對明文進行加密,有兩種情況需要這樣作:
1、您向朋友傳送加密數據,您希望只有您的朋友可以解密,這樣的話,您需要首先獲取您朋友的密鑰對中公開的那一個密鑰,e及n。然後用這個密鑰進行加密,這樣密文只有您的朋友可以解密,因為對應的私鑰只有您朋友擁有。
2、您向朋友傳送一段數據附加您的數字簽名,您需要對您的數據進行MD5之類的運算以取得數據的"指紋",再對"指紋"進行加密,加密將使用您自己的密鑰對中的不公開的私鑰。您的朋友收到數據後,用同樣的運算獲得數據指紋,再用您的公鑰對加密指紋進行解密,比較解密結果與他自己計算出來的指紋是否一致,即可確定數據是否的確是您發送的、以及在傳輸過程中是否被篡改。
密鑰的獲得,通常由某個機構頒發(如CA中心),當然也可以由您自己創建密鑰,但這樣作,您的密鑰並不具有權威性。
計算方面,按公式計算就行了,如果您的加密強度為1024位,則結果會在有效數據前面補0以補齊不足的位數。補入的0並不影響解密運算。
⑥ android加密演算法有哪些
android中用的到加密:
Https編程 :應該是使用帶安全的網路協議處理。除非你本地需要加密
2.數據簽名:混淆代碼和防二次打包的APK加密技術
3.對稱加密:可以先將數據通過某種加密方式加密發送到伺服器端,然後伺服器端再解密 ,項目中除了登陸,支付等介面採用rsa非對稱加密,之外的採用aes對稱加密
4.非對稱加密====支付寶
數字摘要是指通過演算法將長數據變為短數據,通常用來標識數據的唯一性,是否被修改,常用的加密演算法有md5和sha1兩種,如Android的App簽名也是用的這兩種演算法。
由於以上兩種生成數字摘要的演算法都是不可逆的,對於可逆的加密演算法中,按照密鑰的數量和加密規則一半分為對稱加密和非對稱加密兩類:
對稱加密:
密鑰可以自己指定,只有一把密鑰,如果密鑰泄漏數據就會暴漏;
常用的對稱加密演算法有DES和AES兩種;
特點是加密速度快,但是缺點是安全性低,因為只要密鑰暴漏,數據就可以被解密。
非對稱加密的特點:
常見的非對稱加密演算法是RSA;
他有兩把密鑰,且是由程序生成的,不能自己指定;
特點是加密速度比較慢,但是安全性比較高;
加密和解密的規則是:公鑰加密只能私鑰解密,私鑰加密只能公鑰解密;
⑦ RSA 加密演算法(原理篇)
前幾天看到一句話,「我們中的很多人把一生中最燦爛的笑容大部分都獻給了手機和電腦屏幕」。心中一驚,這說明了什麼?手機和電腦已經成為了我們生活中的一部分,所以才會有最懂你的不是你,也不是你男朋友,而是大數據。
如此重要的個人數據,怎樣才能保證其在互聯網上的安全傳輸呢?當然要靠各種加密演算法。說起加密演算法,大家都知道有哈希、對稱加密和非對稱加密了。哈希是一個散列函數,具有不可逆操作;對稱加密即加密和解密使用同一個密鑰,而非對稱加密加密和解密自然就是兩個密鑰了。稍微深入一些的,還要說出非對稱加密演算法有DES、3DES、RC4等,非對稱加密演算法自然就是RSA了。那麼當我們聊起RSA時,我們又在聊些什麼呢?今天筆者和大家一起探討一下,有不足的地方,還望各位朋友多多提意見,共同進步。
RSA簡介:1976年由麻省理工學院三位數學家共同提出的,為了紀念這一里程碑式的成就,就用他們三個人的名字首字母作為演算法的命名。即 羅納德·李維斯特 (Ron Rivest)、 阿迪·薩莫爾 (Adi Shamir)和 倫納德·阿德曼 (Leonard Adleman)。
公鑰:用於加密,驗簽。
私鑰:解密,加簽。
通常知道了公鑰和私鑰的用途以後,即可滿足基本的聊天需求了。但是我們今天的主要任務是來探究一下RSA加解密的原理。
說起加密演算法的原理部分,肯定與數學知識脫不了關系。
我們先來回憶幾個數學知識:
φn = φ(A*B)=φ(A)*φ(B)=(A-1)*(B-1)。
這個公式主要是用來計算給定一個任意的正整數n,在小於等於n的正整數中,有多少個與n構成互質的關系。
其中n=A*B,A與B互為質數,但A與B本身並不要求為質數,可以繼續展開,直至都為質數。
在最終分解完成後,即 φ(N) = φ(p1)*φ(p2)*φ(p3)... 之後,p1,p2,p3都是質數。又用到了歐拉函數的另一個特點,即當p是質數的時候,φp = p - 1。所以有了上面給出的歐拉定理公式。
舉例看一下:
計算15的歐拉函數,因為15比較小,我們可以直接看一下,小於15的正整數有 1、2、3、4、5、6、7、8、9、10、11、12、13、14。和15互質的數有1、2、4、7、8、11、13、14一共四個。
對照我們剛才的歐拉定理: 。
其他感興趣的,大家可以自己驗證。
之所以要在這里介紹歐拉函數,我們在計算公鑰和私鑰時候,會用到。
如果兩個正整數m 和 n 互質,那麼m 的 φn 次方減1,可以被n整除。
其中 .
其中當n為質數時,那麼 上面看到的公式就變成了
mod n 1.
這個公式也就是著名的 費馬小定理 了。
如果兩個正整數e和x互為質數,那麼一定存在一個整數d,不止一個,使得 e*d - 1 可以被x整除,即 e * d mode x 1。則稱 d 是 e 相對於 x的模反元素。
了解了上面所講的歐拉函數、歐拉定理和模反元素後,就要來一些化學反應了,請看圖:
上面這幅圖的公式變化有沒有沒看明白的,沒看明白的咱們評論區見哈。
最終我們得到了最重要的第5個公式的變形,即紅色箭頭後面的:
mod n m。
其中有幾個關系,需要搞明白,m 與 n 互為質數,φn = x,d 是e相對於x的模反元素。
有沒有看到一些加解密的雛形。
從 m 到 m。 這中間涵蓋了從加密到解密的整個過程,但是缺少了我們想要的密文整個過程。
OK,下面引入本文的第四個數學公式:
我們來看一下整個交換流程:
1、客戶端有一個數字13,服務端有一個數字15;
2、客戶端通過計算 3的13次方 對 17 取余,得到數字12; 將12發送給服務端;同時服務端通過計算3的15次方,對17取余,得到數字6,將6發送給客戶端。至此,整個交換過程完成。
3、服務端收到數字12以後,繼續計算,12的15次方 對 17取余,得到 數字10。
4、客戶端收到數字 6以後,繼續計算,6的13次方 對 17 取余,得到數字 10。
有沒有發現雙方,最終得到了相同的內容10。但是這個數字10從來沒有在網路過程中出現過。
好,講到這里,可能有些人已經恍然大悟,這就是加密過程了,但是也有人會產生疑問,為什麼要取數字3 和 17 呢,這里還牽涉到另一個數學知識,原根的問題。即3是17的原根。看圖
有沒有發現規律,3的1~16次方,對17取余,得到的整數是從1~16。這時我們稱3為17的原根。也就是說上面的計算過程中有一組原根的關系。這是最早的迪菲赫爾曼秘鑰交換演算法。
解決了為什麼取3和17的問題後,下面繼續來看最終的RSA是如何產生的:
還記得我們上面提到的歐拉定理嗎,其中 m 與 n 互為質數,n為質數,d 是 e 相對於 φn的模反元素。
當迪菲赫爾曼密鑰交換演算法碰上歐拉定理會產生什麼呢?
我們得到下面的推論:
好,到這里我們是不是已經看到了整個的加密和解密過程了。
其中 m 是明文;c 是密文; n 和 e 為公鑰;d 和 n 為私鑰 。
其中幾組數字的關系一定要明確:
1、d是e 相對於 φn 的模反元素,φn = n-1,即 e * d mod n = 1.
2、m 小於 n,上面在講迪菲赫爾曼密鑰交換演算法時,提到原根的問題,在RSA加密演算法中,對m和n並沒有原根條件的約束。只要滿足m與n互為質數,n為質數,且m < n就可以了。
OK,上面就是RSA加密演算法的原理了,經過上面幾個數學公式的狂轟亂炸,是不是有點迷亂了,給大家一些時間理一下,後面會和大家一起來驗證RSA演算法以及RSA為什麼安全。
⑧ RSA加密演算法,求大神幫解答
如果用一段已經知道的明文,經過公鑰加密,得到密文。現在已知明文密文和n, 是不是就可以通過解密的公式不斷的冪運算求出私鑰d呢?