入门向的RSA算法研究

RSA可以说是很出名的算法了,这一套非对称加密的算法在网络上的应用非常多,多到你可能每分钟都用到了它.

上次看到一个使用RSA简易算法在范围内随机的文章,所以就仔细研究了一下RSA的基础知识.

发明这算法的大神们,显然都是数学上的行家,所以,我们先得补补数学知识.

第一个,就是欧拉函数,FML!我表示很难看懂,所以我只能告诉你一个结论.

我们用φ(N)表示在小于或等于N的正整数中,与N互质的数的个数.

同时,还有特殊情况,如果P和Q是不相同的两个质数,N=P*Q,那么φ(N)=(P-1)(Q-1).

另外,如果N是质数,那么φ(N)=N-1.

第二个,就是欧拉定理:如果两个正整数a与N互质,那么a的φ(N)次方除以N的余数为1.

第三个,模反元素.如果两个正整数a与N互质,那么一定有一个整数b,使得(a*b-1)%N=0,b就是a的模反元素.模反元素显然可能不止一个.

根据欧拉定理,a的φ(N)-1次方,必然就是a的模反元素.


介绍完以上知识,就可以先做一个简单的RSA算法示例.

对于P,Q两个质数,我假设P=5,Q=11.

那么N=P*Q=55,φ(N)=(P-1)(Q-1)=40.

接下来,在[1,φ(N)]的闭区间上,选一个与φ(N)互质的数e.

我假设e为7,假设e的模反元素为d,根据上面讲的定理,必然有e*d%φ(N)=1   ==>   7*d%40=1

因为是mod的关系,所以可以看做7d+40k=1.

这里根据,碾转相除法,我算出了第一个匹配的值,(d, k) = (-17, 3),为了方便计算,d最好是个正数,所以选择另一组数(23, -4).

到此为止,所有需要的数据都已经计算完毕:

N = 55 P = 5 Q = 11 e = 7 d = 23, 公钥 (N, e) = (55, 7) ,密钥 (N, d) = (55, 23).

注意,RSA加密的数据需要小于N,当数据过大的时候,一般采用分段加密的办法.

现在来使用刚才算出的公钥加密数字8.  8的7次方对55模运算为2. 2就是8加密后的数据.

当2传递给解密者之后.  解密过程 2的23次方对55模运算为8.就是发送前未加密的数据.


这里只是一个简单的模拟,所选用的N值55,二进制110111,才6位,现今对于安全度要求比较高的环境,都是1024位或者2048位的加密.

从理论上来说,要破解RSA,就是将N值因数分解,所以RSA的安全性是建立在现阶段对超大数的因数分解的困难上.

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值