第三周任务

博客讲述了RSA加密算法的原理及破解方法,包括利用欧几里得算法求解d,使用factordb.com分解大素数,以及应对低加密指数和大e值的攻击策略。还提到了Python库gmpy2和owiener库在解密过程中的应用。

stfshow五道题

easyrsa1

因为m=pow(c,d,n)  所以我们要先把d给搞出来。而d是e和φn的逆元,所以要求出φn,而φn=(p-1)*(q-1),那么我们最后回到求p和q的问题上来。

factordb.com这个网站可以输入n的值求出p和q的值。

p=1201147059438530786835365194567
q=1212112637077862917192191913841

然后我们就可以算出φn并求出d,最后得到明文m了

 m=584734024210318745406046669953309948776602881661

然后换成字符

flag{fact0r_sma11_N} 

easyrsa2

 这道题n不互素

因为n1=p1*q   n2=p2*q,所以n1和n2的最大公约数就是q,

q=gmpy2.gcd(n1,n2)

求出q后进一步可以求得p1和p2,然后方法同上一道题。在最后那里加上这个可不让输出的时候没有前面那个b''

.decode()

要注意的是,求p1的时候一定要用p1=n1//q而不是p1=n1/q,因为虽然能被整除,但是后者的p1不是int类型,会出事。

经过我的实验,发现不一定非要求出p2等元素,解密结果是一样的。

easyrsa3

同一个n,不同的e,共模攻击!

说实话我不太懂这个是啥,照着做出来的

s1,s2,s3=gmpy2.gcdext(e1,e2)

这一步为啥前面有三个元素,扩展欧几里得算法不是只能得到两个数吗

 easyrsa4

 看似和第一题做法一样,仔细一看e很小,n非常大,那么就是低加密指数攻击

1.当m³<n时,c = m³,直接将c开三次方即可得到m;
2.当m³> n时,c= m³-i* n,只要找到i,使得c +i*n能够开三次方即可得到m。

  easyrsa5

e过大,是低解密攻击

看大佬调用这个函数可以得到d

import owiener

d=owiener.attack(e,n)

Python学习笔记

 

凯撒密码源码分析

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值