2023冬 密码学趣题——3
时间:2023-01-30
本文章向大家介绍2023冬 密码学趣题——3,主要内容包括NSSCTF Round7 Crypto2、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
NSSCTF Round7 Crypto2
一道DFS深搜解决的Crypto问题,近期遇到了好多类似问题,例如2022祥云杯的leak_rsa,pwnhub冬季赛的ASR等
使用DFS相比较暴力枚举可以获得较大程度的时间优化,关键需要找到递归深搜的约束条件,在RSA问题中,常用p q的二进制形式,结合p q满足的代数关系进行未知位数的求解
本题中,noise数据约为496bit,p q在p异或noise数据后满足p q对应位异或为1,即一个为0一个为1
故约束条件为:当noise对应位数为1时,p q对应位数相同,当noise对应位数为0时,p q对应位数不同,同时需要爆破p q初始6bit(512-496 bit)
下面贴一下hash_hash师傅的脚本
exp:
from Crypto.Util.number import *
n = 41318049256306878752610363510443063846398425395380140041750273228898867125431643076792748095350841316908817123295460735023972380672601911521967903168498956815844239645588653318914375679652097733616310197002562672499303685182470376181481346970080428677364527350092396859145037116902812954358374669364384913427
c = 27070540330107450045627683100045912856410895481625142319800852839841731626448328869640781957044283023330602619830680434366284193902342701915890107858579608199114076122922529542716089973350291443861189285892509527723571602143348593521006635099775353434183582637659593238282521070746330471702109551135619697958
noise = 185034449414461457706935642079602544758706503071368652992126720879903163440501141185140715685662707819122833016885046533942763603927989442741721805186
sign = bin(noise)[2:].rjust(512,'0')[::-1]
def find(p,q):
l=len(p)
if len(p)==512:
if n%int(p,2)==0:
p = int(p,2)
q = int(q,2)
phi=(p-1)*(q-1)
d=inverse(0x10001,phi)
m=pow(c,d,n)
print(long_to_bytes(m))
else:
pp = int(p,2)
qq = int(q,2)
if pp*qq%2**l == n%2**l:
if sign[l] == '1':
find('0'+p, '0'+q)
find('1'+p, '1'+q)
else:
find('0'+p, '1'+q)
find('1'+p, '0'+q)
p = '1'
q = '1'
for i in range(2**6):
for j in range(2**6):
p = bin(i)[2:].rjust(6,'0')+'1'
q = bin(j)[2:].rjust(6,'0')+'1'
find(p,q)
#b'NSSCTF{cca92586-7e73-4474-bd29-fc1b1e64f70e}'
原文地址:https://www.cnblogs.com/App1eTree/p/17077107.html
- javascript:FF/Chrome 与 IE 动态加载元素的区别
- 腾讯云发布企业级微服务中间件TSF,助企业构建亿级互联网应用架构
- java学习:字符串比较“==”与“equals”的差异及与c#的区别
- 纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(2)RPD资料档案库创建
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(3)创建一个简单的分析
- 请查收!这里有一封信鸽传给您的信
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(4)创建多维钻取分析
- silverlight:RadMaskedTextBox设置MaskType="Numeric"及Mask="n"时的一个bug
- 微信里面最神秘的功能,你知道吗?
- 以大数据之名,变身!——In big data we trust
- 90%家长都不知道关于少儿编程的这些疑题!
- 常用SQL语句和语法汇总
- Python学习笔记1——斐波那契数列
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android把Bitmap保存为PNG图像文件的简单代码
- 零基础学小程序006---小程序获取用户信息用户昵称
- Android webview 内存泄露的解决方法
- Android编程实现全局获取Context及使用Intent传递对象的方法详解
- Android App更改应用的图标的实现方法
- 零基础学小程序007---小程序获取用户openid
- Android编程中光线传感器的调用方法详解
- Android编程使用sax解析xml数据的方法详解
- 微信小程序弹出用户授权弹窗,微信小程序引导用户授权,获取位置经纬度
- Android用RecyclerView实现动态添加本地图片
- Android利用RecyclerView编写聊天界面
- 5行代码实现微信消息推送,springboot实现微信推送,java微信推送
- Android控件ListView使用方法详解
- android ContentResolver获取手机电话号码和短信内容
- 借助云开发实现小程序列表页(包含json数据的请求和解析)