導航:首頁 > 文檔加密 > rsa加密如何使用偽隨機數學

rsa加密如何使用偽隨機數學

發布時間:2022-08-22 21:07:40

A. 一個RSA演算法加密運算,需要完整的演算過程。

我來回答你可以閉帖了,呵呵
看你題目的意思就是打算把republic這個詞按照你的方法裝換成數字例如是:X
p=3,q=11
n=p*q=33
t=(p-1)*(q-1)=20
取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數為1)
我們可以取e=7
要求d*e%t==1(D*e除以t取余等於1),我們可以找到D=3
此時我們就有了三個數
n=33
d=3 公鑰
e=7 私鑰

設消息為數M (M <n)
設c=(M**d)%n就得到了加密後的消息c
設m=(c**e)%n則 m == M,從而完成對c的解密。
註:**表示次方,上面兩式中的d和e可以互換。

我們可以對republic詞按照你的方法裝換成數字:X一位一位的加密。
加入X的第一位是6(別的同理)
則:M = 6
加密時:(c為加密後的數字)
c=(M**d)%n=(6^3)%33=216%33=18(商6餘18),則6加密後就是18了
解密時:
設m=(c**e)%n則 m == M,
(18^7)%33=612220032%33=6(商18552122餘6)
到此加密解密完成。
至於怎麼把republic裝換成X,把X裝分成多少部分進行分批加密,你可以自己決定。但是加密的數字M 需要小於n

如果需要給你寫個程序,留個Email,我空的時候寫個發給你。

我個人給你個方法,因為n=33 >26(26個英文字母),所以可以把republic分成一個字母一個字母的加密。
按你的分發 REP 就分成數字
18 05 16
加密
(18^3)%33=5832%33= 24
(05^3)%33=125%33= 26
(16^3)%33=%33= 4
所以加密後就是
24 26 04 轉換成字母就是 XZD
解密
(24^7)%33=4586471424%33=18
(26^7)%33=8031810176%33=05
(4^7)%33=16384%33=16
又變成 18 05 16 轉換成字母就是 REP
是不是很簡單啊~~

我如果不懂。空間裡面有片文章,你可以看看,就知道我上面講的那些是什麼意思了。

RSA演算法舉例說明
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html

B. 急求!!「1024位的RSA 公開密鑰加密演算法 」數據結構課程設計!高手解答啊!!

[我是不是復制粘貼的,我認真寫的,你也認真看下就懂了]
我寫的這個淺顯易懂,看看你就明白了。舉得有例子。

RSA演算法舉例說明
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html

空間裡面好像還有演算法

知道裡面剛才回答了另個朋友的問題帖出來給你看看
http://..com/question/91261774.html?si=2
題目:用RSA演算法加密時,已經公鑰是(e=7,n=20),私鑰是(e=3,n=20),用公鑰對消息M=3加密,得到的密文是_____?
給出詳細過程。 謝謝!
答:
你所說的:
n=20
d=7 公鑰
e=3 私鑰
對M=3 進行加密
M'=M^d%n (M的d次方,然後除以n取余數)
M'=3^7%20=2187%20=7 加密後等於7

對M'=7進行解密
M=M'^e%n=7^3%20=343%20=3 解密後又變成3了

你取的兩個素數太小了,所以n太小根本起不了作用。至少要取1024位的數字

C. 語言不限,做出一個基於rsa演算法的偽隨機數生成器(PRNG)

函數srand((無符號)時間(NULL));

X =蘭特()%100 + 1

D. 怎樣用RSA,DES等做成隨機數生成器 能用到現成的類嗎

最簡單的辦法,用DES去加密一個隨機數,或者GUID就行了嘛
現成的類有啊
System.Security.Cryptography.DES 就是加密類。
用它去加密Random.NextBytes,再用Random.Next做DES的key就行了
如果不需要數字型的隨機數,那直接用GUID就行了,永遠不會重復。
public static string DESRandomString(){
System.Security.Cryptography.DES des = System.Security.Cryptography.DES.Create();
DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0, 0);
TimeSpan ts = DateTime.Now - dt;
Random ran = new Random(ts.Milliseconds); //用當時的毫秒數做隨機種子避免出現固定的隨機序列
des.GenerateIV();
des.GenerateKey(); //自動生成加密的密鑰和種子,如果你要能解密這個隨機數的話,可以自己指定IV和Key.
System.Security.Cryptography.ICryptoTransform trans = des.CreateEncryptor();
Byte[] content = new Byte[8] ; //這個數組的長短決定了你結果的長短
ran.NextBytes(content) ; //產生隨機數
content = trans.TransformFinalBlock(content, 0, content.Length); //加密
return Convert.ToBase64String(content); //返回base64形式的隨機字串
// return BitConverter.ToString(content).Replace("-", string.Empty); //返回HEX形式的字串
}

E. RSA加密演算法原理

RSA加密演算法是一種典型的非對稱加密演算法,它基於大數的因式分解數學難題,它也是應用最廣泛的非對稱加密演算法,於1978年由美國麻省理工學院(MIT)的三位學著:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。

它的原理較為簡單,假設有消息發送方A和消息接收方B,通過下面的幾個步驟,就可以完成消息的加密傳遞:
消息發送方A在本地構建密鑰對,公鑰和私鑰;
消息發送方A將產生的公鑰發送給消息接收方B;
B向A發送數據時,通過公鑰進行加密,A接收到數據後通過私鑰進行解密,完成一次通信;
反之,A向B發送數據時,通過私鑰對數據進行加密,B接收到數據後通過公鑰進行解密。
由於公鑰是消息發送方A暴露給消息接收方B的,所以這種方式也存在一定的安全隱患,如果公鑰在數據傳輸過程中泄漏,則A通過私鑰加密的數據就可能被解密。
如果要建立更安全的加密消息傳遞模型,需要消息發送方和消息接收方各構建一套密鑰對,並分別將各自的公鑰暴露給對方,在進行消息傳遞時,A通過B的公鑰對數據加密,B接收到消息通過B的私鑰進行解密,反之,B通過A的公鑰進行加密,A接收到消息後通過A的私鑰進行解密。
當然,這種方式可能存在數據傳遞被模擬的隱患,但可以通過數字簽名等技術進行安全性的進一步提升。由於存在多次的非對稱加解密,這種方式帶來的效率問題也更加嚴重。

F. RSA加密演算法簡易演示

RSA演算法安全性本質是三大數學困難問題之一也就是大數分解問題,因為目前尚沒有一種有效的方法可以在短時間內分解兩個大素數的乘積。驗證步驟如上面所說的,原理書上有,具體程序實現簡單講一下

  1. 判斷質數,這是基本水平,可以窮舉也可以建表,按自己喜好

  2. 這一步是計算兩個大素數乘積沒什麼好說的

  3. 判斷兩個數互質,一般採用歐幾里得演算法,輾轉相除直到得到gcd(e1,m)=1。當然你也可以窮舉公因數一直到sqrt(min{e1,m})

  4. 計算乘法逆元是依靠廣義歐幾里得演算法,乘法逆元的意思是形如a*a1 ≡ 1(mod m)這樣的(因為這里的群的乘法定義就是數學乘法),a和a1互為彼此模m的逆元,記作a1=a^-1 mod m,只有gcd(a,m)=1時才有唯一解否則無解。

    計算方法是廣義歐幾里得除法,設r0=m,r1=a,s0=1,s1=0,t0=0,t1=1;

    計算ai=[r(i-1)/ri],r(i+1)=r(i-1)-airi,s(i+1)=s(i-1)-aisi,t(i+1)=t(i-1)-aiti,直到ri=0

    舉例如a=7,m=13,計算a^-1 mod m:

    a1=[13/7]=1,r2=r0-a1r1=6,s2=s0-a1s1=1,t2=t0-a1t1=-1;

    a2=[7/6]=1,r3=r1-a2r2=1,s3=s1-a2s2=-1,t3=t1-a2t2=2;

    a3=[6/1]=6,r4=r2-a3r3=0.

    取s=s3=-1,t=t3=2,則有7*2-1*13=1,故a^-1mod m=t=2。

    把上面的方法寫成C++演算法應該很簡單

5和6都是計算同餘沒什麼好說的,記得要用到a^e≡b^e(mod m)化簡

要畢業了還搞不懂逆元有點拙計啊,回去好好看看離散數學吧

G. 如何快速生成隨機數 RSA演算法

可以採用32bit RSA演算法
設A從2~(N-1)
C=(A EXP D) mod N
滿足如下條件:
D是素數,N是兩個素數(P,Q)之積,
(D * E) mod ((P-1) * (Q-1))=1
因為:若
C=(A EXP D)mod N
有:
A=(C EXP E) mod N
所以,C與A 一一對應。
所以,對於A=2~(N-1),有不重復,無遺漏的偽隨機碼C。
凡是稍微扯上一點數學,尤其是高等數學的問題,我等泛泛之輩看起來就有點費勁,這里雖然文字不長,但是還得慢慢來看。
這裡面RSA演算法是密碼學三大演算法之一(RSA、MD5、DES),是一種不對稱密碼演算法。說如果滿足條件:D是素數,N是兩個素數(P,Q)之積,(D * E) mod ((P-1) * (Q-1))=1,那麼存在C與A(范圍從2到N-1)一一對應,且C=(A EXP D)mod N。A是一個有順序的數,C就是一個看似無規律的偽隨機數。Mod運算表示求模,例如7Mod3=1。意思是7除以3餘1。類似地8Mod3=2,9Mod3=0。EXP表示前面數的後面數次方,AEXPD表示A的D次方。這兩個運算清楚了,其它的也就沒什麼困難的了,*是乘法的意思,大多數理科生都清

H. rsa加密和解密的理論依據是什麼

以前也接觸過RSA加密演算法,感覺這個東西太神秘了,是數學家的事,和我無關。但是,看了很多關於RSA加密演算法原理的資料之後,我發現其實原理並不是我們想像中那麼復雜,弄懂之後發現原來就只是這樣而已..
學過演算法的朋友都知道,計算機中的演算法其實就是數學運算。所以,再講解RSA加密演算法之前,有必要了解一下一些必備的數學知識。我們就從數學知識開始講解。
必備數學知識
RSA加密演算法中,只用到素數、互質數、指數運算、模運算等幾個簡單的數學知識。所以,我們也需要了解這幾個概念即可。
素數
素數又稱質數,指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。這個概念,我們在上初中,甚至小學的時候都學過了,這里就不再過多解釋了。
互質數
網路上的解釋是:公因數只有1的兩個數,叫做互質數。;維基網路上的解釋是:互質,又稱互素。若N個整數的最大公因子是1,則稱這N個整數互質。
常見的互質數判斷方法主要有以下幾種:
兩個不同的質數一定是互質數。例如,2與7、13與19。
一個質數,另一個不為它的倍數,這兩個數為互質數。例如,3與10、5與 26。
相鄰的兩個自然數是互質數。如 15與 16。
相鄰的兩個奇數是互質數。如 49與 51。
較大數是質數的兩個數是互質數。如97與88。
小數是質數,大數不是小數的倍數的兩個數是互質數。例如 7和 16。
2和任何奇數是互質數。例如2和87。
1不是質數也不是合數,它和任何一個自然數在一起都是互質數。如1和9908。
輾轉相除法。
指數運算
指數運算又稱乘方計算,計算結果稱為冪。nm指將n自乘m次。把nm看作乘方的結果,叫做」n的m次冪」或」n的m次方」。其中,n稱為「底數」,m稱為「指數」。
模運算
模運算即求余運算。「模」是「Mod」的音譯。和模運算緊密相關的一個概念是「同餘」。數學上,當兩個整數除以同一個正整數,若得相同餘數,則二整數同餘。
兩個整數a,b,若它們除以正整數m所得的余數相等,則稱a,b對於模m同餘,記作: a ≡ b (mod m);讀作:a同餘於b模m,或者,a與b關於模m同餘。例如:26 ≡ 14 (mod 12)。
RSA加密演算法
RSA加密演算法簡史
RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。
公鑰與密鑰的產生
假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產生一個公鑰和一個私鑰:
隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。
根據歐拉函數,求得r = (p-1)(q-1)
選擇一個小於 r 的整數 e,求得 e 關於模 r 的模反元素,命名為d。(模反元素存在,當且僅當e與r互質)
將 p 和 q 的記錄銷毀。
(N,e)是公鑰,(N,d)是私鑰。Alice將她的公鑰(N,e)傳給Bob,而將她的私鑰(N,d)藏起來。
加密消息
假設Bob想給Alice送一個消息m,他知道Alice產生的N和e。他使用起先與Alice約好的格式將m轉換為一個小於N的整數n,比如他可以將每一個字轉換為這個字的Unicode碼,然後將這些數字連在一起組成一個數字。假如他的信息非常長的話,他可以將這個信息分為幾段,然後將每一段轉換為n。用下面這個公式他可以將n加密為c:

ne ≡ c (mod N)
計算c並不復雜。Bob算出c後就可以將它傳遞給Alice。
解密消息
Alice得到Bob的消息c後就可以利用她的密鑰d來解碼。她可以用以下這個公式來將c轉換為n:
cd ≡ n (mod N)
得到n後,她可以將原來的信息m重新復原。
解碼的原理是:
cd ≡ n e·d(mod N)
以及ed ≡ 1 (mod p-1)和ed ≡ 1 (mod q-1)。由費馬小定理可證明(因為p和q是質數)
n e·d ≡ n (mod p) 和 n e·d ≡ n (mod q)
這說明(因為p和q是不同的質數,所以p和q互質)
n e·d ≡ n (mod pq)
簽名消息
RSA也可以用來為一個消息署名。假如甲想給乙傳遞一個署名的消息的話,那麼她可以為她的消息計算一個散列值(Message digest),然後用她的密鑰(private key)加密這個散列值並將這個「署名」加在消息的後面。這個消息只有用她的公鑰才能被解密。乙獲得這個消息後可以用甲的公鑰解密這個散列值,然後將這個數據與他自己為這個消息計算的散列值相比較。假如兩者相符的話,那麼他就可以知道發信人持有甲的密鑰,以及這個消息在傳播路徑上沒有被篡改過。

RSA加密演算法的安全性

當p和q是一個大素數的時候,從它們的積pq去分解因子p和q,這是一個公認的數學難題。然而,雖然RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價。
1994年彼得·秀爾(Peter Shor)證明一台量子計算機可以在多項式時間內進行因數分解。假如量子計算機有朝一日可以成為一種可行的技術的話,那麼秀爾的演算法可以淘汰RSA和相關的衍生演算法。(即依賴於分解大整數困難性的加密演算法)
另外,假如N的長度小於或等於256位,那麼用一台個人電腦在幾個小時內就可以分解它的因子了。1999年,數百台電腦合作分解了一個512位長的N。1997年後開發的系統,用戶應使用1024位密鑰,證書認證機構應用2048位或以上。
RSA加密演算法的缺點

雖然RSA加密演算法作為目前最優秀的公鑰方案之一,在發表三十多年的時間里,經歷了各種攻擊的考驗,逐漸為人們接受。但是,也不是說RSA沒有任何缺點。由於沒有從理論上證明破譯RSA的難度與大數分解難度的等價性。所以,RSA的重大缺陷是無法從理論上把握它的保密性能如何。在實踐上,RSA也有一些缺點:
產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密;
分組長度太大,為保證安全性,n 至少也要 600 bits 以上,使運算代價很高,尤其是速度較慢,。

I. 運用RSA演算法對以下數據進行加密解密操作

第一個:
P=p-1=6;Q=q-1=10;PQ=60;
n=p*q=77;
∵e1=17
∴e2可以為53(這個過程是最重要的,需要反復的試數字和反運算才能得出,結果不唯一)
這個m是什麼呢?是明文么?如果是的話
密文 = m^e2 mod n =9^53 mod 77 = 25
明文 = 25^17 mod 77 = 9 = m

同樣的方法,第二個:
e1=7
e2可以為19、31、……這里我選31好了
密文 = 7^31 mod 21 = 7
明文 = 7^7 mod 21 = 7

閱讀全文

與rsa加密如何使用偽隨機數學相關的資料

熱點內容
歐美大尺度男同電影 瀏覽:985
張學友最後大佬電影 瀏覽:777
心理罪中廖亞凡懷了孩子 瀏覽:844
伺服器如何開許可權設置密碼 瀏覽:271
申請資料填寫小程序源碼 瀏覽:177
伺服器怎麼私信別人 瀏覽:994
phpxdebug關閉 瀏覽:690
能看的網址大家都懂的 瀏覽:287
安卓程序員開發經驗 瀏覽:660
伺服器返回超時是怎麼回事 瀏覽:653
網關後dns伺服器有什麼用 瀏覽:607
line連接不上伺服器怎麼辦 瀏覽:862
付費電影免費下載 瀏覽:607
反編譯flv 瀏覽:939
python替換指定位置 瀏覽:337
有名txt下載寶書網 瀏覽:197
飛機app安卓怎麼注冊 瀏覽:801
電影院默認場區什麼意思 瀏覽:657
韓國 禁忌 姐弟愛唯美電影 瀏覽:82
極限壓縮方法 瀏覽:263