当前位置:首页 » 密码管理 » 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

热点内容
怎么知道支付宝密码 发布:2025-09-17 07:12:37 浏览:422
压缩性判断句 发布:2025-09-17 07:11:44 浏览:140
php金额格式化 发布:2025-09-17 06:47:11 浏览:38
什么是工作站服务器 发布:2025-09-17 06:45:03 浏览:188
d盘无法访问参数不正确 发布:2025-09-17 06:30:36 浏览:470
为什么征兵网无法访问 发布:2025-09-17 06:19:31 浏览:376
mysqlsql语句变量赋值 发布:2025-09-17 06:19:26 浏览:37
真我3i什么配置 发布:2025-09-17 06:17:59 浏览:141
输入有效的服务器地址ip 发布:2025-09-17 06:17:26 浏览:440
德育源码 发布:2025-09-17 06:16:00 浏览:106