加密和解密使用的是兩個不同的秘鑰,這種演算法叫做非對稱加密。非對稱加密又稱為公鑰加密,RSA只是公鑰加密的一種。
現實生活中有簽名,互聯網中也存在簽名。簽名的作用有兩個,一個是身份驗證,一個是數據完整性驗證。數字簽名通過摘要演算法來確保接收到的數據沒有被篡改,再通過簽名者的私鑰加密,只能使用對應的公鑰解密,以此來保證身份的一致性。
數字證書是將個人信息和數字簽名放到一起,經由CA機構的私鑰加密之後生成。當然,不經過CA機構,由自己完成簽名的證書稱為自簽名證書。CA機構作為互聯網密碼體系中的基礎機構,擁有相當高級的安全防範能力,所有的證書體系中的基本假設或者前提就是CA機構的私鑰不被竊取,一旦 CA J機構出事,整個信息鏈將不再安全。
CA證書的生成過程如下:
證書參與信息傳遞完成加密和解密的過程如下:
互質關系:互質是公約數只有1的兩個整數,1和1互質,13和13就不互質了。
歐拉函數:表示任意給定正整數 n,在小於等於n的正整數之中,有多少個與 n 構成互質關系,其表達式為:
其中,若P為質數,則其表達式可以簡寫為:
情況一:φ(1)=1
1和任何數都互質,所以φ(1)=1;
情況二:n 是質數, φ(n)=n-1
因為 n 是質數,所以和小於自己的所有數都是互質關系,所以φ(n)=n-1;
情況三:如果 n 是質數的某一個次方,即 n = p^k ( p 為質數,k 為大於等於1的整數),則φ(n)=(p-1)p^(k-1)
因為 p 為質數,所以除了 p 的倍數之外,小於 n 的所有數都是 n 的質數;
情況四:如果 n 可以分解成兩個互質的整數之積,n = p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)
情況五:基於情況四,如果 p1 和 p2 都是質數,且 n=p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)
而 RSA 演算法的基本原理就是歐拉函數中的第五種情況,即: φ(n)=(p1-1)(p2-1);
如果兩個正整數 a 和 n 互質,那麼一定可以找到整數 b,使得 ab-1 被 n 整除,或者說ab被n除的余數是1。這時,b就叫做a的「模反元素」。歐拉定理可以用來證明模反元素必然存在。
可以看到,a的 φ(n)-1 次方,就是a對模數n的模反元素。
n=p x q = 3233,3233寫成二進制是110010100001,一共有12位,所以這個密鑰就是12位。
在實際使用中,一般場景下選擇1024位長度的數字,更高安全要求的場景下,選擇2048位的數字,這里作為演示,選取p=61和q=53;
因為n、p、q都為質數,所以φ(n) = (p-1)(q-1)=60×52= 3120
注意,這里是和φ(n) 互互質而不是n!假設選擇的值是17,即 e=17;
模反元素就是指有一個整數 d,可以使得 ed 被 φ(n) 除的余數為1。表示為:(ed-1)=φ(n) y --> 17d=3120y+1,算出一組解為(2753,15),即 d=2753,y=-15,也就是(17 2753-1)/3120=15。
注意,這里不能選擇3119,否則公私鑰相同??
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
公鑰是公開的,也就是說m=p*q=3233是公開的,那麼怎麼求e被?e是通過模反函數求得,17d=3120y+1,e是公開的等於17,這時候想要求d就要知道3120,也就是φ(n),也就是φ(3233),說白了,3233是公開的,你能對3233進行因數分解,你就能知道d,也就能破解私鑰。
正常情況下,3233我們可以因數分解為61*53,但是對於很大的數字,人類只能通過枚舉的方法來因數分解,所以RSA安全性的本質就是:對極大整數做因數分解的難度決定了RSA演算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA演算法愈可靠。
人類已經分解的最大整數是:
這個人類已經分解的最大整數為232個十進制位,768個二進制位,比它更大的因數分解,還沒有被報道過,因此目前被破解的最長RSA密鑰就是768位。所以實際使用中的1024位秘鑰基本安全,2048位秘鑰絕對安全。
網上有個段子:
已經得出公私鑰的組成:
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
加密的過程就是
解密過程如下:
其中 m 是要被加密的數字,c 是加密之後輸出的結果,且 m < n ,其中解密過程一定成立可以證明的,這里省略證明過程。
總而言之,RSA的加密就是使用模反函數對數字進行加密和求解過程,在實際使用中因為 m < n必須成立,所以就有兩種加密方法:
對稱加密存在雖然快速,但是存在致命的缺點就是秘鑰需要傳遞。非對稱加密雖然不需要傳遞秘鑰就可以完成加密和解密,但是其致命缺點是速度不夠快,不能用於高頻率,高容量的加密場景。所以才有了兩者的互補關系,在傳遞對稱加密的秘鑰時採用非對稱加密,完成秘鑰傳送之後採用對稱加密,如此就可以完美互補。
② 從哪開始學習軟體的加密與解密
你說的是軟體破解吧?
呵呵 第一要懂匯編 第二就是要懂演算法!
一定要搞明白演算法是怎麼樣的 前提必須要脫殼,這才是技術
③ 求密碼學解密演算法
關於計算機信息加密與解密技術,現在有很多這樣的教材可供參考。例如:《計算機密碼編碼學與網路安全》,因為計算機信息的加密演算法和解密演算法必須是配對使用的,當初使用的是哪一種演算法對信息進行的加密,那麼在對經過加密的信息進行解密時,也必須要使用相應的解密演算法才行,並不是通用的。所以說,如果要學習關於這方面的知識的話,就必須要專門學習關於計算機信息加密與解密的課程,該課程中會講到多種的計算機信息加密演算法和解密演算法。
④ 密碼學是怎麼樣通過加密和解密的,
你是想知道密碼學怎樣加解密還是?
近代密碼學:編碼密碼學主要致力於信息加密、信息認證、數字簽名和密鑰管理方面的研究。信息加密的目的在於將可讀信息轉變為無法識別的內容,使得截獲這些信息的人無法閱讀,同時信息的接收人能夠驗證接收到的信息是否被敵方篡改或替換過;數字簽名就是信息的接收人能夠確定接收到的信息是否確實是由所希望的發信人發出的;密鑰管理是信息加密中最難的部分,因為信息加密的安全性在於密鑰。歷史上,各國軍事情報機構在獵取別國的密鑰管理方法上要比破譯加密演算法成功得多。
密碼分析學與編碼學的方法不同,它不依賴數學邏輯的不變真理,必須憑經驗,依賴客觀世界覺察得到的事實。因而,密碼分析更需要發揮人們的聰明才智,更具有挑戰性。
現代密碼學是一門迅速發展的應用科學。隨著網際網路的迅速普及,人們依靠它傳送大量的信息,但是這些信息在網路上的傳輸都是公開的。因此,對於關繫到個人利益的信息必須經過加密之後才可以在網上傳送,這將離不開現代密碼技術。
1976年Diffie和Hellman在《密碼新方向》中提出了著名的D-H密鑰交換協議,標志著公鑰密碼體制的出現。 Diffie和Hellman第一次提出了不基於秘密信道的密鑰 分發,這就是D-H協議的重大意義所在。
PKI(Public Key Infrastructure)是一個用公鑰概念與技術來實施和提供安全服務的具有普適性的安全基礎設施。PKI公鑰基礎設施的主要任務是在開放環境中為開放性業務提供數字簽名服務。
要查看具體的某個密碼體系的知識可參考《密碼學概論》。
⑤ 密碼學知識精粹
① 替換法
替換法很好理解,就是用固定的信息將原文替換成無法直接閱讀的密文信息。例如將 b 替換成 w ,e 替換成p ,這樣bee 單詞就變換成了wpp,不知道替換規則的人就無法閱讀出原文的含義。
替換法有單表替換和多表替換兩種形式。
② 移位法
移位法就是將原文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後得出密文,典型的移位法應用有 「 愷撒密碼 」。
例如約定好向後移動2位(abcde - cdefg),這樣 bee 單詞就變換成了dgg。
古典密碼破解方式--頻率分析法
古典密碼的安全性受到了威脅,外加使用便利性較低,到了工業化時代,近現代密碼被廣泛應用。
恩尼格瑪機
恩尼格瑪機是二戰時期納粹德國使用的加密機器,其使用的加密方式本質上還是移位和替代,後被英國破譯,參與破譯的人員有被稱為計算機科學之父、人工智慧之父的圖靈。
① 散列函數加密(消息摘要,數字摘要)
散列函數,也見雜湊函數、摘要函數或哈希函數,可將任意長度的消息經過運算,變成固定長度數值,常見的有MD5、SHA-1、SHA256,多應用在文件校驗,數字簽名中。
MD5 可以將任意長度的原文生成一個128位(16位元組)的哈希值
SHA-1可以將任意長度的原文生成一個160位(20位元組)的哈希值
特點:消息摘要(Message Digest)又稱為數字摘要(Digital Digest)
它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數對消息進行作用而產生
使用數字摘要生成的值是不可以篡改的,為了保證文件或者值的安全
MD5演算法 : 摘要結果16個位元組, 轉16進制後32個位元組
SHA1演算法 : 摘要結果20個位元組, 轉16進制後40個位元組
SHA256演算法 : 摘要結果32個位元組, 轉16進制後64個位元組
SHA512演算法 : 摘要結果64個位元組, 轉16進制後128個位元組
② 對稱加密
對稱密碼應用了相同的加密密鑰和解密密鑰。對稱密碼分為:序列密碼(流密碼),分組密碼(塊密碼)兩種。流密碼是對信息流中的每一個元素(一個字母或一個比特)作為基本的處理單元進行加密,塊密碼是先對信息流分塊,再對每一塊分別加密。
例如原文為1234567890,流加密即先對1進行加密,再對2進行加密,再對3進行加密……最後拼接成密文;塊加密先分成不同的塊,如1234成塊,5678成塊,90XX(XX為補位數字)成塊,再分別對不同塊進行加密,最後拼接成密文。前文提到的古典密碼學加密方法,都屬於流加密。
示例
我們現在有一個原文3要發送給B
設置密鑰為108, 3 * 108 = 324, 將324作為密文發送給B
B拿到密文324後, 使用324/108 = 3 得到原文
常見加密演算法
DES : Data Encryption Standard,即數據加密標准,是一種使用密鑰加密的塊演算法,1977年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),並授權在非密級政府通信中使用,隨後該演算法在國際上廣泛流傳開來。
AES : Advanced Encryption Standard, 高級加密標准 .在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。
特點
加密速度快, 可以加密大文件
密文可逆, 一旦密鑰文件泄漏, 就會導致數據暴露
加密後編碼表找不到對應字元, 出現亂碼,故一般結合Base64使用
加密模式
ECB : Electronic codebook, 電子密碼本. 需要加密的消息按照塊密碼的塊大小被分為數個塊,並對每個塊進行獨立加密
優點 : 可以並行處理數據
缺點 : 同樣的原文生成同樣的密文, 不能很好的保護數據
CBC : Cipher-block chaining, 密碼塊鏈接. 每個明文塊先與前一個密文塊進行異或後,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊
優點 : 同樣的原文生成的密文不一樣
缺點 : 串列處理數據
填充模式:當需要按塊處理的數據, 數據長度不符合塊處理需求時, 按照一定的方法填充滿塊長的規則
NoPadding不填充.
對應的AES加密類似,但是如果使用的是AES加密,那麼密鑰必須是16個位元組。
加密模式和填充模式:
AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
PS: Base64是網路上最常見的用於傳輸8Bit位元組碼的可讀性編碼演算法之一
可讀性編碼演算法不是為了保護數據的安全性,而是為了可讀性
可讀性編碼不改變信息內容,只改變信息內容的表現形式
所謂Base64,即是說在編碼過程中使用了64種字元:大寫A到Z、小寫a到z、數字0到9、「+」和「/」
Base64 演算法原理:base64 是 3個位元組為一組,一個位元組 8位,一共 就是24位 ,然後,把3個位元組轉成4組,每組6位(3 * 8 = 4 * 6 = 24),每組缺少的2位會在高位進行補0 ,這樣做的好處在於 base取的是後面6位而去掉高2位 ,那麼base64的取值就可以控制在0-63位了,所以就叫base64,111 111 = 32 + 16 + 8 + 4 + 2 + 1 =
toString()與new String ()用法區別
③ 非對稱加密
非對稱密碼有兩支密鑰,公鑰(publickey)和私鑰(privatekey),加密和解密運算使用的密鑰不同。用公鑰對原文進行加密後,需要由私鑰進行解密;用私鑰對原文進行加密後(此時一般稱為簽名),需要由公鑰進行解密(此時一般稱為驗簽)。公鑰可以公開的,大家使用公鑰對信息進行加密,再發送給私鑰的持有者,私鑰持有者使用私鑰對信息進行解密,獲得信息原文。因為私鑰只有單一人持有,因此不用擔心被他人解密獲取信息原文。
特點:
加密和解密使用不同的密鑰
如果使用私鑰加密, 只能使用公鑰解密
如果使用公鑰加密, 只能使用私鑰解密
處理數據的速度較慢, 因為安全級別高
常見演算法:RSA,ECC
數字簽名
數字簽名的主要作用就是保證了數據的有效性(驗證是誰發的)和完整性(證明信息沒有被篡改),是非對稱加密和消息摘要的應用
keytool工具使用
keytool工具路徑:C:\Program Files\Java\jre1.8.0_91\bin
--- END
⑥ word文檔加密了怎麼解密啊
最安全的方法就是詢問遺留文檔的人密碼是什麼,這樣可以避免很多麻煩;另外文檔對你很重要的話不建議使用代碼等方法,一不小心操作錯誤極容易損壞文檔,那就不值當了。最後的底線就是使用一款比較好的word密碼破解工具來找回密碼,不用懂代碼,門外漢也可以輕松搞定。
這里以Advanced Office Password Recovery破解word密碼說明找回密碼的步驟:
雖然Advanced Office Password Recovery軟體十分專業,但是使用起來還是十分方便的,如果不是十分復雜的密碼,只需要用戶打開要破解密碼的Word文檔,「准備攻擊」就可以恢復密碼。如果密碼較為復雜,准備攻擊破解失敗,用戶需要選擇Word密碼破解工具「恢復」標簽頁中其他具有更強攻擊力的攻擊類型。等待Advanced Office Password Recovery的破解攻擊運行5秒左右便彈出了以下結果對話框:
上圖紅框中內容就是AOPR軟體破解的Word密碼1991,若是破解長且復雜的密碼可能會需要耗費較長的時間,用戶需要學習更多Word密碼破解工具的破解技巧請參考教程:http://www.passwordrecovery.cn/kuaisu-pojie.html。
⑦ 密碼學基礎(二):對稱加密
加密和解密使用相同的秘鑰稱為對稱加密。
DES:已經淘汰
3DES:相對於DES有所加強,但是仍然存在較大風險
AES:全新的對稱加密演算法。
特點決定使用場景,對稱加密擁有如下特點:
速度快,可用於頻率很高的加密場景。
使用同一個秘鑰進行加密和解密。
可選按照128、192、256位為一組的加密方式,加密後的輸出值為所選分組位數的倍數。密鑰的長度不同,推薦加密輪數也不同,加密強度也更強。
例如:
AES加密結果的長度由原字元串長度決定:一個字元為1byte=4bit,一個字元串為n+1byte,因為最後一位為'