欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

并舉例說明如何將一個簡單的明文利用此算法進行加密

洪振霞2年前20瀏覽0評論

并舉例說明如何將一個簡單的明文利用此算法進行加密?

一什么是RSA

RSA是一種密碼體制。RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被廣泛使用。RSA是目前使用最廣泛的公鑰密碼體制之一。為它是信息通信安全的基石,保證了加密數據不會被破解

二密鑰發展歷史

1976年以前,所有的加密方法都是同一種方式:

(1)甲方選擇某一種加密規則,對信息進行加密;

(2)乙方使用同一種規則,對信息進行解密。

由于加密和解密使用同樣規則(規則就簡稱"密鑰"),這就是"對稱加密"。

這種模式必須解決一個問題:通信雙方必須同時擁有“密鑰”,也就是說,把信息加密解決的問題,轉化為密鑰的保存和傳遞,就成了最頭疼的問題。

1976年,兩位美國計算機學家Whitfield Diffie 和 Martin Hellman,提出了一種全新的思路,解決密鑰的保存和傳遞問題,這就是著名的"Diffie-Hellman密鑰交換算法"。這個算法的原理就是:加密和解密可以使用不同的規則,這要規則間有某種關聯關系,可以推導出密鑰,就避免了直接傳遞密鑰。這種新的加密模式被稱為"非對稱加密算法"。

1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出了RSA,"非對稱加密算法",RSA就是他們三人姓氏開頭字母拼在一起組成的。具有里程碑式的貢獻,開創了密碼學的先河,是的密碼在信息安全和通信保密方面做出了巨大的貢獻。

這種算法非常可靠,密鑰越長,它就越難破解。根據已經披露的文獻,目前被破解的最長RSA密鑰是768個二進制位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。

三數學理論

RSA算法的安全性基于RSA問題的困難性,也就是基于大整數因子分解的困難性上。但是RSA問題不會比因子分解問題更加困難,也就是說,在沒有解決因子分解問題的情況下可能解決RSA問題,因此RSA算法并不是完全基于大整數因子分解的困難性上的。

(1)互質

如果兩個正整數,除了1以外,沒有其他公因子,我們就稱這兩個數是互質。

(2)歐拉函數

如果兩個正整數m和n互質,那么m的φ(n)次方減去1,可以被n整除

(3)費馬小定理

歐拉定理的特殊情況:如果兩個正整數m和n互質,而且n為質數!那么φ(n)結果就是n-1。

四RSA的定理模型:

設p,q是兩個素數,n=p*q;

假設整數e滿足1<e<φ(n),(e, φ(n))=1;

1、那么e,φ(n)就滿足了定理(5),所以就存在整數s、d,e*d+s* φ(n)=1;

2、假設存在一個整數a,(a,n)=1;那么a和q,p也應該互素,即(a,p)=1;(a,q)=1;

既然(a,p)=1;那就滿足了定理(6);所以a^φ(p)=1 mod p;

等式兩邊同時做φ(q)次冪運算,得到(a^φ(p))^φ(q)=1^φ(q) mod p,

整理得a^(φ(p)*φ(q))=1 mod p;

套用定理(5),φ(n)=φ(p)*φ(q),所以a^φ(n)=1 mod p;

等式兩邊同時做s次冪運算,得到a^(s*φ(n))=(1^s) modp=1 mod p;

左右在個乘以a,得到a^(1+(s*φ(n)))=a mod p;

這是我們發現1+(s*φ(n))不就是e*d嗎?(套用1、結論);所以:

a^(e*d)=a mod p;①這是一個重要的結論,同理,q,p在本質上是相同的,所以

a^(e*d)=a mod q;②

算式①和算式②可以利用剩余定理得出結論a^(e*d)=a mod (p*q);

剩余定理是比較復雜的,不過我們可以狹義的理解為這樣的數學題,一個整數,被5除余1,被7除余1,那么這個整數最小是多少呢?答案是36,因為這個整數一定被5*7=35除余1,所以它是36,71,106……所以最小是36;

那么a^(e*d)=a mod (p*q)就很好理解了,因為n=p*q;所以a^(e*d)=a mod n;

五 加解密過程

以密碼通信中的兩位經典人物 :Alice和Bob,為例。描述一下非稱加密算法的流程,假設愛麗絲要與鮑勃進行加密通信,她該怎么生成公鑰和私鑰呢?

在此可以看到,非對稱加密是通過兩個密鑰(公鑰-私鑰)來實現對數據的加密和解密的。公鑰用于加密,私鑰用于解密。

現在就來看看RSA算法是怎么來對數據進行加密的吧,如下是一幅RSA加密算法流程及加密過程圖。

加密過程:

A提取消息m的消息摘要h(m),并使用自己的私鑰對摘要h(m)進行加密,生成簽名s

A將簽名s和消息m一起,使用B的公鑰進行加密,生成密文c,發送給B。

解密過程:

B接收到密文c,使用自己的私鑰解密c得到明文m和數字簽名s

B使用A的公鑰解密數字簽名s解密得到H(m)。

B使用相同的方法提取消息m的消息摘要h(m)

B比較兩個消息摘要。相同則驗證成功;不同則驗證失敗。

RSA加密過程簡述

A和B進行加密通信時,B首先要生成一對密鑰。一個是公鑰,給A,B自己持有私鑰。A使用B的公鑰加密要加密發送的內容,然后B在通過自己的私鑰解密內容。

數字簽名的作用是保證數據完整性,機密性和發送方角色的不可抵賴性

假設A要想B發送消息,A會先計算出消息的消息摘要,然后使用自己的私鑰加密這段摘要加密,最后將加密后的消息摘要和消息一起發送給B,被加密的消息摘要就是“簽名”。

B收到消息后,也會使用和A相同的方法提取消息摘要,然后使用A的公鑰解密A發送的來簽名,并與自己計算出來的消息摘要進行比較。如果相同則說明消息是A發送給B的,同時,A也無法否認自己發送消息給B的事實。

其中,A用自己的私鑰給消息摘要加密成為“簽名”;B使用A的公鑰解密簽名文件的過程,就叫做“驗簽”。

上面就是RSA的原理和全部過程,真正的應用中,不需要理解 如此復雜的 密碼學原理。有很多開源的庫,可以直接使用。

后續

RSA公鑰體制的安全性是基于大數分解(嚴格的說是對兩個大質數的乘積進行分解)這一數學難題的。 盡管RSA是目前使用最為廣泛的公鑰加密算法,但人們對其安全性的質疑和研究自其誕生之日起就從沒停止過。更令人擔憂的是,RSA中的指數運算保留了輸入的乘積結構。

最近,來自澳大利亞昆士蘭大學和我國中科大的兩個研究小組獨立的建造出了能夠運行Shor算法的量子計算機原型。而Shor正是一種能夠高效的進行大數分解運算的計算機!對此,《新科學家》雜志報道說:出現能夠運行Shor算法的量子計算機具有極為深遠的意義,這意味著量子計算帶來的最為可怕的威脅即將成為現實——它能夠輕松的破解保護我們銀行賬號等的密碼!所以說,道高一尺魔高一丈,破解和反破解是永恒的話題。

java 二進制文件加密,并舉例說明如何將一個簡單的明文利用此算法進行加密