cooper+隐含数+2元cooper

发现群里一个题,应该是几天前一个比赛的。作了一下午。

from Crypto.Util.number import *
import os
from hashlib import *
from random import *
p = getPrime(512)
q = getPrime(512)
n  = p*q
m = bytes_to_long(os.urandom(20))
x = pow(m,p,n)
y = pow(m,q,n)with open('output.txt', 'w') as file:file.write('n = ' + str(n) + '\n')file.write('x = ' + str(x) + '\n')  # x = m+kp  y = m+kq file.write('y = ' + str(y) + '\n')iv = sha256(str(p).encode()).digest()[:16]n = 17
q = getPrime(1024)
x = randint(q//2,q-1)
S = 2**544
K = 2**480s = [randint(S//2,S-1) for i in range(n+1)]
t = [randint(S//2,S-1) for i in range(n+1)]k = [randint(K//2,K-1) for i in range(n+1)]
b = [randint(K//2,K-1) for i in range(n+1)]r = [(s[i]*k[i] - b[i]*t[i]) * inverse(x,q) % q for i in range(n+1)]with open('output.txt', 'a') as file:file.write(f"s = {s}\n")file.write(f"t = {t}\n")file.write(f"r = {r}\n")file.write('q = ' + str(q) + '\n')key = sha256(str(2024*b[0]+2023*k[0] + x).encode()).digest()[:16]from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
from uuid import *
from flag import flagaes = AES.new(key,AES.MODE_CBC,iv)
cipher = aes.encrypt(pad(flag.encode(),16))
with open('output.txt', 'a') as file:file.write(f"cipher = {cipher}")

题目分3部分,第1部分给了x, x=m^p mod n 求p

这个式子转化成模p则有 x= m mod p => x = m+kp 所以第1步就是用 cooper求m得到iv

P.<v> = PolynomialRing(Zmod(n))
f = x-v 
res = f.monic().small_roots(X=2^160, beta=0.499, epsilon=0.02)
m = res[0]
p = gcd(x-m,n)
#11675696190896351906539196500765316141680444580734032619300603052044661463297533718415320957466064560635233414047482845327443000187098988487753476160734723iv = sha256(str(p).encode()).digest()[:16]
#b'\x80v\xdd\x87F{\x15\x921\x129!\xf9-\xd3\x9b'

第2步给了r[i] = (s[i]*k[i]-t[i]*b[i])*x^-1 mod q 其中s,t,r,q是已知数x,k,b未知,这个式子与标准的hnp_2hole很相似转化一下得到  0 = r[i]*x + s[i]*k[i] - t[i]*b[i] mod q

对应的Beta=[0]*18, Alpha=r,Rho=[s,t] 对应的k,b的规模是[[480,480]]*18 结果试了半天出来的不大对,然后生成测试数据作,发现只有前几个数正确。说明可能规模可能小了,仔细看ehnp函数,发现delta参数默认是1/10^8是啥意思不清楚,指向一篇论文就看不懂了。不过猜就是个粒度之类的,把它调到1/10^12试了一下测试数成功。然后解出x(数不能也能解了不正确的数来,而且这题x只是个随机数也没法判断,只能用后边的s0,t0解key才知道,这里比较坑,如果x是个素数就好了解出来可以看看对不对)

#2,双值隐含数
#r*x + si*ki + ti*bi = 0 mod q
Rho = [[s[i],-t[i]] for i in range(18)]
xbar = 0
Pi = [0]
Nu = [1024] #x
Mu = [[480,480] for i in range(18)] #k,b的规模
Beta = [0]*18
Alpha = [-i for i in r] 
sol = ehnp(xbar, q, Pi, Nu, Alpha, Rho, Mu, Beta, delta=1/10^12,verbose=True)
x = sol
#62630910220966472045159148570603595043775972841964521368726922111769596530618108951116184620060671080472122175609477748445264320873556413198173335784639672637398271928839444735059985662973808598735155594200861656906081025647421950580468995090600624842415232284779649351298179580388119427972698247798862505412

第3步还是上边那个式子。 f = r0*x+s0*k0-t0*b0 mod q 两个未知数k0,b0用二元cooper

s0,t0,r0 = s[0],t[0],ZZ(r[0]*x%q)
P.<k,b> = PolynomialRing(Zmod(q))
f = k*s0 - b*t0 - r0 
k,b=small_roots(f,bounds=(2^480,2^480))[0]
#(2388717748081872654267007777796026827223725574875279634585519193723629483406071381412054772532848739496578082558657978304684124455356276915197267, 2268138536252103308931576938654214291075320009135327629529040117599409415980617650634082218105186688883459074797741629941873869662268650606639168)

这一步的结果也没法验证毕竟这东西都是随机数。只能到最后解看结果了。

key = sha256(str(2024*b+2023*k + x).encode()).digest()[:16]
aes = AES.new(key,AES.MODE_CBC,iv)
aes.decrypt(cipher)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/61057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ 小程序已发布,但无法被搜索的解决方案

前言 我的 QQ 小程序在 2024 年 8 月就已经审核通过&#xff0c;上架后却一直无法被搜索到。打开后&#xff0c;再在 QQ 上下拉查看 “最近使用”&#xff0c;发现他出现一下又马上消失。 上线是按正常流程走的&#xff0c;开发、备案、审核&#xff0c;没有任何违规&#xf…

word 中长公式换行 / 对齐 | Mathtype 中长公式换行拆分 | latex 中长公式换行

注&#xff1a;本文为 “word 中长公式换行 / 对齐 | Mathtype 中长公式换行拆分 | latex 中长公式换行” 相关专题文章合辑。 未整理去重。 “公式较长时最好在等号 “&#xff1d;” 处转行&#xff0c;如难实现&#xff0c;则可在&#xff0b;、&#xff0d;、、 运算符号处…

【优选算法 — 滑动窗口】串联所有单词的子串 最小覆盖子串

串联所有单词的子串 串联所有单词的子串 题目描述 题目解析 算法原理 以示例一为例&#xff0c;一定要记得&#xff0c;words中的每一个字符串长度相同&#xff0c;所以我们可以根据 words 中的每一个字符串的长度length&#xff0c;将 s 这个字符串以 length 个为一组来…

了解 Solon MVC 的参数注入规则

关于 Solon MVC 参数注入&#xff0c;主要尊守以下基本规则&#xff1a; 参数名与请求数据名一一对应。当对上不上时&#xff0c;会采用整体数据注入&#xff08;如果接收的是实体&#xff09;参数名与请求数据同名时&#xff0c;又想整体注入&#xff08;如果接收的是实体&am…

[SpB]如何开始使用 Spring Boot?

如何开始使用 Spring Boot&#xff1f; Spring Boot 简化了 Java 项目开发&#xff0c;你只需要专注于业务逻辑&#xff0c;底层的很多配置和功能由 Spring Boot 自动帮你处理。下面是你如何快速上手 Spring Boot 的步骤&#xff0c;以及如何通过 IDEA 了解 Spring Boot 的功能…

vue如何实现组件切换

一、使用条件渲染 (v-if) <template><div><button click"currentView ComponentA">Show Component A</button><button click"currentView ComponentB">Show Component B</button><component-a v-if"curren…

WEB攻防-通用漏洞SQL注入sqlmapOracleMongodbDB2等

SQL注入课程体系&#xff1a; 1、数据库注入-access mysql mssql oracle mongodb postgresql 2、数据类型注入-数字型 字符型 搜索型 加密型&#xff08;base64 json等&#xff09; 3、提交方式注入-get post cookie http头等 4、查询方式注入-查询 增加 删除 更新 堆叠等 …

7.揭秘C语言输入输出内幕:printf与scanf的深度剖析

揭秘C语言输入输出内幕&#xff1a;printf与scanf的深度剖析 C语言往期系列文章目录 往期回顾&#xff1a; VS 2022 社区版C语言的安装教程&#xff0c;不要再卡在下载0B/s啦C语言入门&#xff1a;解锁基础概念&#xff0c;动手实现首个C程序C语言概念之旅&#xff1a;解锁关…

SHELL(4)脚本与用户交互以及if条件判断

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

Springboot集成ElasticSearch实现minio文件内容全文检索

一、docker安装Elasticsearch &#xff08;1&#xff09;springboot和Elasticsearch的版本对应关系如下&#xff0c;请看版本对应&#xff1a; 注意安装对应版本&#xff0c;否则可能会出现一些未知的错误。 &#xff08;2&#xff09;拉取镜像 docker pull elasticsearch:7…

部分利用oracle数据字典查询对应信息的语句。

查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; …

#Ts篇: ts学习再梳理

ts类型梳理 类型声明的写法&#xff0c;一律为在标识符后面添加“冒号 类型”。函数参数和返回值&#xff0c;也是这样来声明类型。 function toString(num: number): string {return String(num); }上面示例中&#xff0c;函数toString()的参数num的类型是number。参数列表…

使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题

本地环境 主机MacOs Sequoia 15.1虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 服务器版本 最小安装 开发环境 编辑器编译器调试工具数据库http服务web开发防火墙Vim9Gcc13Gdb14Mysql8Apache2Php8.3Iptables 第一坑 数…

定时器的小应用

第一个项目 第一步&#xff0c;RCC开启时钟&#xff0c;这个基本上每个代码都是第一步&#xff0c;不用多想&#xff0c;在这里打开时钟后&#xff0c;定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…

【工控】线扫相机小结 第三篇

海康软件更新 目前使用的是 MVS_STD_4.3.2_240705.exe &#xff0c;最新的已经到4.4了。 一个大的变动 在上一篇中我们提到一个问题&#xff1a; 需要注意的是&#xff0c;我们必须先设置 TriggerSelector 是 “FrameBurstStart” 还是 “LineStart” 再设置TriggerMode 是 …

零基础利用实战项目学会Pytorch

目录 pytorch简介 1.线性回归 2.数据类型 2.1数据类型检验 2.2Dimension0/Rank0 2.3 Dim1/Rank1 2.4 Dim2/Rank2 3.一些方法 4.Pytorch完成分类任务 4.1模型参数 4.2 前向传播 4.3训练以及验证 4.4 三行搞定&#xff01; 4.5 准确率 5、Pytorch完成回归任务 5.…

MySQL的游标和While循环的详细对比

MySQL游标和While循环的详细对比 在 MySQL 中&#xff0c;游标和 WHILE 循环是两种常用的处理结果集的机制。它们各自有不同的应用场景和特点。本文将详细对比这两种机制&#xff0c;并提供具体的示例代码和说明。 1. 游标&#xff08;Cursor&#xff09; 游标是一种数据库对…

【#IEEE独立出版、EI稳定检索##高录用 快见刊 稳检索#】2024健康大数据与智能医疗国际会议(ICHIH 2024,12月13-15日)

#IEEE独立出版、EI稳定检索# #往届快至会后3-4个月检索# #高录用 快见刊 稳检索# 2024健康大数据与智能医疗国际会议&#xff08;ICHIH 2024&#xff09; 2024 International Conference on Health Big Data and Intelligent Healthcare 重要信息 大会官网&#xff1a;ww…

C++网络编程之SSL/TLS加密通信

概述 在互联网时代&#xff0c;数据的安全性变得尤为重要。随着网络安全威胁的不断增加&#xff0c;确保信息传输过程中的机密性、完整性和可用性成为了开发者必须考虑的关键因素。在C网络编程中&#xff0c;使用SSL/TLS加密通信是一种常见的做法。它允许客户端和服务器之间通过…

vue3中ElementPlus引入下载icon图标不显示透明问题解决教程方法

问题&#xff1a;今天用vue3开发&#xff0c;使用ElementPlus图标引入了但是不显示&#xff0c;是空白透明 解决&#xff1a; 1、在main.js中引入element-plus/icons-vue图标库 import * as ElIcons from element-plus/icons-vue; // 引入图标库 2、注册所有图标 // 注册所有…