當前位置:首頁 » 密碼管理 » rsa中文加密

rsa中文加密

發布時間: 2022-11-13 21:05:06

A. rsa加密演算法

rsa加密演算法如下:

演算法原理:

RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰

B. RSA加密演算法的內容是怎樣的

1) 確定密鑰的寬度。
2) 隨機選擇兩個不同的素數p處q,它們的寬度是密鑰寬度的二分之一。
3) 計算出p和q的乘積n 。
4) 在2和Φ(n)之間隨機選擇一個數e , e 必須和Φ(n)互素,整數e用做加密密鑰(其中Φ(n)=(p-1)*(q-1))。
5) 從公式ed ≡ 1 mod Φ(n)中求出解密密鑰d 。
6) 得公鑰(e ,n ), 私鑰 (d , n) 。
7) 公開公鑰,但不公開私鑰。
8) 將明文P (假設P是一個小於n的整數)加密為密文C,計算方法為:
C = P^e mod n
9) 將密文C解密為明文P,計算方法為:
P = C^d mod n
然而只根據n和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密

C. RSA加解密原理以及三種填充模式

如果需要理解RSA的加密原理,需要理解以下理論:

​ 等同於求一元二次方程 23 * d + 192 * y = 1

​ 可以求得其中一解為(d=167,y=-20)

​ 至此就完成了所有的計算

​ 對於上述例子的到公鑰(221,23)和私鑰(221,167)

在上述的計算過程中一共用到了

上面用到的數中只有公鑰部分是公開的,即(221,23)。那麼我們是否可以通過公鑰來推到出私鑰部分,即已知n和e,推到出d?

(1)ed 1(mod (n)),只有知道 (n)才能解出d

(2) (n)= (p) (q)= (p-1) (q-1),只有知道p和q才能得到 (n)

(3)n=p q,就需要對n進行因式分解

那麼如果可以對n因式分解就可以求出d,也就意味著私匙被破解

那麼RSA加密的可靠性就在於對n因式分解的難度,而現在對一個整數n做因式分解並沒有巧妙的演算法,只有通過暴力破解計算。在實際應用中的n取值通常在1024位以上,而公開已知的可因式分解的最大數為768位。所以現階段來說RSA加密是可靠的。

現在我們就可以進行加密和解密了

我們使用上面生成的公鑰(221,23)來加密。如果我們需要加密的信息是m( m必須為整數並且m要小於n ),m取56,可以用以下公式求出加密串c:

c (mod n)

10 (mod 221)

可以求出加密後的結果c為10

密鑰為(221,167),加密結果c=10,可以使用以下公式求出被加密的信息

m (mod n) 即加密結果的d次方除以n的余數為m

56 (mod 221)

RSA加密屬於塊加密演算法,總是在一個固定長度的塊上進行操作。如果被加密的字元串過長,則需要對字元串進行切割,如果字元串過短則需要進行填充。

以下主介紹一下RSA_PKCS1_PADDING填充模式以及RSA_NO_PADDING模式

此填充模式是最常用的填充模式,在此填充模式下輸入的長度受加密鑰的長度限制,輸入的最大長度為加密鑰的位數k-11。如果公鑰的長度為1024位即128位元組,那麼輸入的長度最多為128-11=117位元組。如果長度小於117就需要填充。如果輸入T的長度為55位元組,填充後的塊為EM,則EM格式如下:

EM= 0x00 || BT || PS || 0x00 || T

在此填充模式下,輸入的長度最多和RSA公鑰長度一樣長,如果小於公鑰長度則會在前面填充0x00。如果公鑰長度是128位元組,輸入T的長度為55位元組,填充後的塊為EM,則EM格式如下:

EM=P || T

參考:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
https://my.oschina.net/3pgp/blog/749195

D. RSA公鑰加密是什麼意思

RSA公鑰密碼是1977年由Ron Rivest、Adi Shamirh和LenAdleman在MIT(美國麻省理工學院〉開發的,1978年首次公布[RIVE78]。它是目前最有影響的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊。目前它已被ISO推薦為公鑰數據加密標准。RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想分解它們的乘積卻極端困難,因此可以將乘積公開作為加密密鑰。

RSA的演算法結構相當簡單,整個演算法可以描述如下:

(1)選取兩個大素數p和q(保密);

(2)計算n=pq(公開),γ=(p一1〉(q-1)(保密);

(3)隨機選取整數e(公開,加密密鑰),使得ed(ear)=1

(4)計算d(保密,私人密鑰),使得ed≡1(mod r),即d=e-1(mod r);

(5)加密:c=me mod n

(6)解密:m=cd mod n。

利用RSA對被加密的信息m (長度小於log2n的整數)進行加密得到相應的密文c=me mod n;解密演算法則是計算m=cd modn RSA的優點是不需要密鑰分配,但缺點是速度慢。

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加密是一種非對稱加密。可以在不直接傳遞密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風險。是由一對密鑰來進行加解密的過程,分別稱為公鑰和私鑰。公鑰加密--私鑰解密,私鑰加密--公鑰解密

在 整數 中, 離散對數 是一種基於 同餘 運算和 原根 的一種 對數 運算。而在實數中對數的定義 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證書

G. java給漢字進行RSA加密

類似的,樓上說的針對一個漢字的寫法也沒錯。
假如是RSA,應該使用BigDecimal函數來做。
那麼,把字元串按照某一編碼格式進行轉換成byte [] ,然後使用BigDecimal轉換成大整數,就能進行RSA計算了。

String 轉 byte [] 方法是String.getBytes (字元集) 字元集可能是「UTF-16」 或者漢字的「GBK」 。

H. rsa演算法原理

RSA演算法是最常用的非對稱加密演算法,它既能用於加密,也能用於數字簽名。RSA的安全基於大數分解的難度。其公鑰和私鑰是一對大素數(100到200位十進制數或更大)的函數。從一個公鑰和密文恢復出明文的難度,等價於分解兩個大素數之積。

我們可以通過一個簡單的例子來理解RSA的工作原理。為了便於計算。在以下實例中只選取小數值的素數p,q,以及e,假設用戶A需要將明文「key」通過RSA加密後傳遞給用戶B,過程如下:設計公私密鑰(e,n)和(d,n)。

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3與20互質)則e×d≡1 mod f(n),即3×d≡1 mod 20。通過試算我們找到,當d=7時,e×d≡1 mod f(n)同餘等式成立。因此,可令d=7。從而我們可以設計出一對公私密鑰,加密密鑰(公鑰)為:KU =(e,n)=(3,33),解密密鑰(私鑰)為:KR =(d,n)=(7,33)。

英文數字化。將明文信息數字化,並將每塊兩個數字分組。假定明文英文字母編碼表為按字母順序排列數值。則得到分組後的key的明文信息為:11,05,25。

明文加密。用戶加密密鑰(3,33) 將數字化明文分組信息加密成密文。由C≡Me(mod n)得:
C1(密文)≡M1(明文)^e (mod n) == 11≡11^3 mod 33 ;
C2(密文)≡M2(明文)^e (mod n) == 26≡05^3 mod 33;
C3(密文)≡M3(明文)^e (mod n) == 16≡25^3 mod 33;
所以密文為11.26.16。

密文解密。用戶B收到密文,若將其解密,只需要計算,即:
M1(明文)≡C1(密文)^d (mod n) == 11≡11^7 mod 33;
M2(明文)≡C2(密文)^d (mod n) == 05≡26^7 mod 33;
M3(明文)≡C3(密文)^d (mod n) == 25≡16^7 mod 33;
轉成明文11.05.25。根據上面的編碼表將其轉換為英文,我們又得到了恢復後的原文「key」。

當然,實際運用要比這復雜得多,由於RSA演算法的公鑰私鑰的長度(模長度)要到1024位甚至2048位才能保證安全,因此,p、q、e的選取、公鑰私鑰的生成,加密解密模指數運算都有一定的計算程序,需要仰仗計算機高速完成。

I. 關於RSA對漢字加密亂碼的問題

可能與你採用的字元編碼有關,不同的編碼在處理時會有不同的處理,有可能是將一個漢字計做了一個字元,導致數據的錯誤。建議先將你的數據轉碼為多位元組進行RSA加密處理,解密後再還原為你原來的編碼(如UNICODE)。

J. RSA加密原理概述

歐拉函數通式: 若a可以寫成 a=P1^α1...Pn^αn,其中P1...Pn為素數,α1...αn為正整數,則我們有

φ(a) = (P1^(α1-1))(P1-1)...(Pn^(αn-1))(Pn-1),由此我們可得二元一次情況下的化簡,若a = pq(pq均為素數),有φ(a) =(p-1)(q-1)

歐拉定理:(a,m)= 1時,a^φ(m) = 1(modm)

//上述定理參見初等數論2第8-14頁。

若a,b是兩個互素的正整數,一定存在兩個數x,y使得ax+by=1,這里因為xy可以做正負變化,所以寫成ax-by = 1也行

即,若a,b>0且(a,b)= 1,一定存在兩個數使 ax = 1(modb)

//參見初等數論1第45頁

a=b(modm)時,有a^n=b^n(modm)

//初等數論1第58頁

我們取兩個大素數pq,並令他們的積為模數n。

根據通式,我們有φ(n) =(p-1)(q-1)

取與φ(n)互素且小於φ(n)的公鑰e,則一定存在e的逆元d使得 ed = 1(modφ(n)),取d為私鑰

假設我們需要給消息M加密,我們的消息M必須與n互素,又由於n=pq,M只需要小於n且不等於p或者q即可。

加密時,我們求得加密數 C1 = M^e(modn)

解密時,我們求得解密數 C2 = C1^d(modn)

所以加密時,我們需要<e,n>對,而解密時,我們需要<d,n>對。

我們將要來證明C2=M:

因為 (M^e(modn))^d = M^ed(modn),所以有 C2 = M^ed(modn),

因為ed = 1+ kφ(n),所以有C2 = M^(1+kφ(n))(modn ) = M*(M^φ(n))^k(modn)

因為歐拉定理有M^φ(n) = 1(modn),所以C2 = M(modn),又因為C2與M運算過程中恆小於n,所以C2=M。

總結一下 C2 = C1^d(modn) = M^ed(modn) = M^(1+kφ(n))(modn) = M(modn)。

而秘鑰運算的條件是,e與φ(n)互素,且M與n互素。

公鑰和私鑰是一對一的關系,因為私鑰取的是公鑰關於模數n的1(modφ(n))的逆元,所以公私鑰是一對一的關系,不管公鑰還是私鑰改變,逆元一定會跟著改變。

雖然公鑰和私鑰都可以通過增加n的整數倍使其對n的余數不變,但是同餘的新公鑰是沒有意義的,因為n是暴露在公鑰里的。

熱點內容
用解壓造句 發布:2025-05-19 17:01:55 瀏覽:340
openwrt編譯取消跑碼 發布:2025-05-19 16:50:28 瀏覽:125
知道了寬頻賬號密碼如何連接 發布:2025-05-19 16:49:49 瀏覽:656
時間輪資料庫 發布:2025-05-19 16:45:20 瀏覽:269
ipad緩存垃圾怎麼清理 發布:2025-05-19 16:44:46 瀏覽:536
視頻加解壓 發布:2025-05-19 16:35:28 瀏覽:7
c語言大學教程第六版 發布:2025-05-19 16:04:21 瀏覽:741
androidvr播放器 發布:2025-05-19 15:55:32 瀏覽:965
我的世界pc如何創建伺服器 發布:2025-05-19 15:51:24 瀏覽:734
搶腳本 發布:2025-05-19 15:47:14 瀏覽:407