當前位置:首頁 » 密碼管理 » rsa對字元串加密

rsa對字元串加密

發布時間: 2022-11-30 07:47:10

A. 如何用python實現rsa演算法加密字元串

你可以使用rsa這個python庫:
>>> (bob_pub, bob_priv) = rsa.newkeys(512)
>>> message = 'hello Bob!'
>>> crypto = rsa.encrypt(message, bob_pub)
>>> message = rsa.decrypt(crypto, bob_priv)
>>> print message
hello Bob!

文檔地址:http://stuvel.eu/files/python-rsa-doc/usage.html#generating-keys

如果解決了您的問題請採納!
如果未解決請繼續追問

B. javascript怎樣利用C#生成的RSA公鑰對字元串加密

js對公鑰串進行加密的寫法:
依賴:RSA.js BigInt.js 和Barrett.js
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>login</title>
<meta http-equiv="pragma" content="no-cache">
<script type="text/javascript" src="js/RSA.js"></script>
<script type="text/javascript" src="js/BigInt.js"></script>
<script type="text/javascript" src="js/Barrett.js"></script>
<script type="text/javascript">
function rsalogin()
{
bodyRSA();
var result = encryptedString(key, document.getElementById("pwd").value);
//alert(result);
loginForm.action="login.do?result="+result;
loginForm.submit();
}
var key ;
function bodyRSA()
{
setMaxDigits(130);
key = new RSAKeyPair("10001","","");

}
</script>

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

熱點內容
javatoolsfor 發布:2024-03-29 18:17:55 瀏覽:899
linuxi2c驅動 發布:2024-03-29 18:09:56 瀏覽:671
junit源碼下載 發布:2024-03-29 18:00:10 瀏覽:525
本田雅閣壓縮機不工作 發布:2024-03-29 17:59:13 瀏覽:600
溯源碼可以偽造嗎 發布:2024-03-29 17:54:45 瀏覽:56
北京編程傳 發布:2024-03-29 17:54:44 瀏覽:435
編程畫曲線 發布:2024-03-29 17:48:59 瀏覽:59
簡單存儲服務s3 發布:2024-03-29 17:48:46 瀏覽:336
安卓手機的usb功能在哪裡設置 發布:2024-03-29 17:46:27 瀏覽:758
配置文件ini如何寫 發布:2024-03-29 17:31:05 瀏覽:997