RSA进阶之共模攻击
适用场景:
同一个n,对相同的m进行了加密,e取值不一样。
e1和e2互质,gcd(e1,e2)=1
如果满足上述条件,那么就可以在不分解n的情况下求解m
原理
复杂的东西简单说:
如果gcd(e1,e2)=1,那么就有e1*s1+e2*s2=1,s1和s2一正一负。
最后会推出来这个公式,c1^s1+c2^s2=m。假设S2是负数,则要计算C2的模反元素假设x,然后求x^(-s2)。
c1^s1+x^-s2=m
注意
这里需要用到gmpy2和libnum,windows下gmpy2很好安装,需要的是python2.7傻瓜式下载安装不断下一步
但是libnum我却没能安装上去,但是在kali下很容易安装。
其实脚本需要同时用到libnum和gmpy2,但是因为不能同时安装所以我是分开求的。
c1和c2的值直接扔到winhex,复制16进制数值出来。 也可以是libnum直接打开.enc密文文件转化查看的。
例题
对jarvis里的veryhard RSA进行详细的分析
https://dn.jarvisoj.com/challengefiles/veryhardRSA.rar.2a89300bd46d028a14e2b5752733fe98
①
rar文件解压后打开是两个enc密文和一个python脚本,打开py脚本。
②

m,e1,e2,n,c1,c2,共模攻击
三.
从实验吧拿来的攻击脚本(感谢这位大哥)

你所要做的就是填写n,c1,c2,e1,e2。十进制十六进制都可以 c1,c2直接扔winhex复制十六进制就可以了。这里应该可以直接用libnum读取enc的,但是我电脑没安上,我恨。kali下安装了,也可以直接在kali下读出来。
④
运行后是十进制,kali下用libnum.n2s("解出的十进制字符")

RSA进阶之共模攻击的更多相关文章
- [CTF] RSA共模攻击
from gmpy2 import * import libnum n = 0x00b0bee5e3e9e5a7e8d00b493355c618fc8c7d7d03b82e409951c182f398 ...
- RSA共模攻击
在安恒月赛中碰到一道密码学方向的ctf题 附上源码 from flag import flag from Crypto.Util.number import * p=getPrime(1024) q= ...
- RSA的共模攻击
实验吧题目:http://www.shiyanbar.com/ctf/1834 参考:http://hebin.me/2017/09/07/%e8%a5%bf%e6%99%aectf-strength ...
- RSA进阶之低加密指数攻击
适用场景: n很大,4000多位,e很小,e=3 一般来说,e选取65537.但是在RSA加密的时候有可能会选用e=3(不要问为什么,因为选取e =3省时省力,并且他可能觉得n在4000多位是很安全的 ...
- RSA进阶之维纳攻击(wiener-attack )
维纳攻击: 场景:e很大 例题: 第七届山东网络安全技能大赛 链接:https://pan.baidu.com/s/1IRInw3pB7SQfp3MxRJW17A 提取码:lcn3 e很大,妥了,维纳 ...
- RSA应用指数与模生成公钥(ArcGIS Server)
参考: https://www.cnblogs.com/luo30zhao/p/10515594.html https://blog.csdn.net/skiof007/article/details ...
- 某站出品2016织梦CMS进阶教程共12课(附文档+工具)
此为广告商内容使用最新版的dede cms建站 V5.7 sp1,经常注意后台的升级信息哦!一.安装DEDE的时候数据库的表前缀,最好改一下,不用dedecms默认的前缀dede_,随便一个名称即可. ...
- RSA进阶之两个N的公约数
适用场景: 给你两个n,n1和n2. 两个数都很大,不好分解. 但是这数刚好有质数公因子(试试欧几里得辗转相除跑完之后,就是不断地相除就可以了,4000多位也是很快的),那不就相当于间接的分解出q或者 ...
- 简单RSA攻击方式
RSA攻击方式总结 1.模数分解 1).解题思路 a).找到RSA算法中的公钥(e,n) b).通过n来找到对应的p和q,然后求得φ(n) c).通过gmpy2.invert或者gmpy2 ...
随机推荐
- Cocos2d-x v3.1 坐标系统(五)
Cocos2d-x v3.1 坐标系统(五) 为了能够更好的布局以及了解对象所在的位置,我们必须对Cocos2d-x中的坐标有详细的了解,本篇文章主要就是了解Cocos中用到的坐标系统.学过数学的人都 ...
- 线程池模块thernd
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor import time def task(i): print ...
- 使用tooltip显示jquery.validate.unobtrusive验证信息
通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...
- 解决Android Studio和Android SDK Manager无法在线更新的问题[转]
升级时提示 Connection failed. Please check your network connection and try again 修改安装目录下bin\studio.exe.vm ...
- Sqlserver列出所有数据库名,表名,字段名【转】
1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 注意: 表Master与SysDatabases之间有两个点 2.获取所 ...
- pycharm tab换为4个空格
Edit => find => replace 然后勾上 Regex,上一行输入 \t,下一行输入4个空格.
- iOS开发:自定义带下划线文本的UIButton
Uiunderlinedbutton.h代码 @interface UIUnderlinedButton : UIButton { } + (UIUnderlinedButton *) underli ...
- memcached for .net on windows
memcached for windowshttp://www.cnblogs.com/dudu/archive/2009/07/19/1526407.htmlhttp://www.cnblogs.c ...
- 使用RichTextBox控件保存文件
实习效果: 知识运用: RichTextBox控件的SaveFile方法 SaveFileDialog对象的ShowDialog方法 实现代码: private void 打开RTF文件ToolStr ...
- 深入理解计算机系统_3e 第九章家庭作业 CS:APP3e chapter 9 homework
9.11 A. 00001001 111100 B. +----------------------------+ | Parameter Value | +--------------------- ...