首页 > 其他分享 >dp泄露

dp泄露

时间:2024-10-09 16:47:49浏览次数:8  
标签:phi -- k2 k1 泄露 dp mod

一直在抄脚本,终于想着来看看原理了。

dp是什么?

  dp = d mod (p-1)

基本前备知识

  e*d = 1 mod ϕ(n)

那么开推吧

dp = d mod (p-1)

--> dp * e = e*d mod (p-1)

--> e*d = dp * e mod (p-1)

--> e*d = dp *e  + k1*(p-1)

             --> dp * e + k1*(p-1) = 1 mod ϕ(n)

              --> dp * e + k1*(p-1) = 1 + k2*ϕ(n)

                         --> dp * e + k1*(p-1) = 1 + k2*(p-1)*(q-1)

                  --> dp * e = 1 + (k2*(q-1) - k1) * (p-1)

由于

dp < (p-1)

所以

0 < (k2*(q-1) - k1) < e

对(p-1)进行爆破即可

脚本

for i in range(1,e):
    if (dp*e-1)%i==0:
        if n%(((dp*e-1)//i)+1)==0:
            p=(dp*e-1)//i+1
            q=n//p
            phi=(p-1)*(q-1)
            d=inverse(e,phi)
            m=pow(c,d,n)

​例题

[FSCTF 2023]RSA 3

附件:

from Crypto.Util.number import bytes_to_long
m=bytes_to_long(flag)
n= 12308543373374311860115195114269947739026255098864232126071500623399852788903738569949462616714391748269539072128882946132686996592089735285396762634029371785959865779256901123369306119124563405765293657606975290441243965513640680841871955014230301486214824204887945375140818283280272607903500556306646445508386218951500563603482945071727344737690804338144982687000734071274618240408238519378280819162796749148066754028700125846348589164721591354555019608871411236973606149388257533629388508942271702742078883636357856776193846813894734271905070538713351614750057245897158615891962167410053552739441195871000310777649
e= 65537
dp= 28196759050232165736649945458463681080421101473761579424309687746007021074159564720195299959516638110870101025657932732247788828322476803386736345945717104030991724584628153257976163663460034720811420324255626233108130037584679035250792445830510130682783638394418531763109219293027733347554816808577799709553
c= 1855798257044238280327042455832785889763141234883180404158555071443088630113034033050409259513632343742665544043437830959750873431928980910236398026670945184328950692568113819821699696418438157336263799808404698795433243968536256780396910914692949484556950491722527661706255009863481905590371725089587377065000354109396062360440021447607401687082247775453369117424848927386857425051097931983703966253652921113920387008048024308793686643944404541941182997963873579988680965558581885273185721576668001462817150245955628293258512024323515581063235248627223179117549540541642185815489978089367061102920114395871329023208

思路:

dp泄露,脚本解即可

exp:

from Crypto.Util.number import *

n= 12308543373374311860115195114269947739026255098864232126071500623399852788903738569949462616714391748269539072128882946132686996592089735285396762634029371785959865779256901123369306119124563405765293657606975290441243965513640680841871955014230301486214824204887945375140818283280272607903500556306646445508386218951500563603482945071727344737690804338144982687000734071274618240408238519378280819162796749148066754028700125846348589164721591354555019608871411236973606149388257533629388508942271702742078883636357856776193846813894734271905070538713351614750057245897158615891962167410053552739441195871000310777649
e= 65537
dp= 28196759050232165736649945458463681080421101473761579424309687746007021074159564720195299959516638110870101025657932732247788828322476803386736345945717104030991724584628153257976163663460034720811420324255626233108130037584679035250792445830510130682783638394418531763109219293027733347554816808577799709553
c= 1855798257044238280327042455832785889763141234883180404158555071443088630113034033050409259513632343742665544043437830959750873431928980910236398026670945184328950692568113819821699696418438157336263799808404698795433243968536256780396910914692949484556950491722527661706255009863481905590371725089587377065000354109396062360440021447607401687082247775453369117424848927386857425051097931983703966253652921113920387008048024308793686643944404541941182997963873579988680965558581885273185721576668001462817150245955628293258512024323515581063235248627223179117549540541642185815489978089367061102920114395871329023208

for i in range(1,e):
    if (dp*e-1)%i==0:
        if n%(((dp*e-1)//i)+1)==0:
            p=(dp*e-1)//i+1
            q=n//p
            phi=(p-1)*(q-1)
            d=inverse(e,phi)
            m=pow(c,d,n)
            print(long_to_bytes(m))

标签:phi,--,k2,k1,泄露,dp,mod
From: https://www.cnblogs.com/snoozy/p/18454596

相关文章

  • 决策单调性DP
    决策单调性DP是一个非常重要的DP类别。在决策点随枚举点增加单调不降时,可以有效地优化复杂度。一般而言,决策点指的是对于一个\(f[i]\),它的值需要从另一个值j中转移,而对于所有j,令\(f[i]\)最大的j值就是决策点。而其单调性体现在对于一个点i,它的决策点一定会大于等于i-1的......
  • (LeetCode 热题 100) 1143. 最长公共子序列(动态规划dp)
    题目:1143.最长公共子序列思路:经典动态规划dp题型,时间复杂度为0(n^2)。C++版本:classSolution{public:intlongestCommonSubsequence(stringtext1,stringtext2){intn=text1.size(),m=text2.size();//状态f[i][j]表示:text1[0,i]和text2[0......
  • pgadmin4敏感信息泄露 CVE-2024-9014
    0x01产品描述:        pgAdmin是全球最先进的开源数据库Postgres的领先开源管理工具。 pgAdmin4旨在满足新手和经验丰富的Postgres用户的需求,提供了强大的图形界面,可简化数据库对象的创建,维护和使用。其可以在Linux,Unix,macOS和Windows上使用,以管理PostgreSQL和EDBA......
  • 计算机网络 tcp和udp
    目录一、TCP建立连接-TCP三次握手1)什么是半连接队列和全连接队列?2)为什么要三次握手?3)三次握手过程中可以携带数据吗?断开连接-TCP四次挥手1)为什么要四次挥手?2)为什么不能把服务端发送的ACK和FIN合并起来,变成三次挥手?3)如果第二次挥手时服务端的ACK没有送......
  • wordpress建立数据库连接时出错怎么办
    WordPress在建立数据库连接时出现问题通常是因为配置文件 wp-config.php 中的信息不正确或数据库本身的问题。你可以按照以下步骤来排查和解决问题:检查配置文件:打开你的WordPress安装目录下的 wp-config.php 文件。确认数据库名称(DB_NAME)、用户名(DB_USER)、密码......
  • 液体泄露检测系统 监控识别管道液体泄漏系统
    液体泄露检测系统通过在关键区域安装监控摄像头,液体泄露检测系统对管道的液体泄露情况进行全天候不间断实时监测。液体泄露检测系统利用Ai视觉智能分析技术,实时感知监控画面中管道液体泄露事件。液体泄露检测系统检测到画面中管道设备液体泄露现象时,将自动发出警报提示相关人员及......
  • dp01
    摘花生题目描述她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。H只能向东或向南走,不能向西或向北走。问H最多能够摘到多少颗花生。这是AcWing上的......
  • Hetao P1031 萌萌题 题解 [ 蓝 ] [ 线性 dp ]
    萌萌题:一道结合了观察性质的线性dp。观察我们先考虑极端情况:所有数相同,所有数降序排列两种情况。对于所有数相同的情况,我们发现,最终可以合并出来的区间,最多只有\(n\logn\)个。怎么证明?考虑固定右端点,那么我们想要合并出一个点,就得选\(2^k\)个数出来,这就有\(\logn\)......
  • 【模板】"动态DP"&动态树分治
    目录题目描述朴素算法矩阵刻画实现code以洛谷模板题为例介绍动态dp的一般方法。P4719【模板】"动态DP"&动态树分治-洛谷|计算机科学教育新生态(luogu.com.cn)P4751【模板】"动态DP"&动态树分治(加强版)-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述给定一......
  • 前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析
    本文属于进阶篇,并不是太适合新人阅读,但纯粹的学习还是可以的,因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端,提前预习和复习下。ddp协议是一个C/S架构的协议,但是客户端也同时可以是服务端。什么是DDP?DDP(DistributedDataProtocol)是Meteor框架中......