Crypto-RSA2

题目:(BUUCTF在线评测 (buuoj.cn)

已知e,n,dp/(dq),c求明文:

首先有如下公式:

dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,n=pq ,φ(n)=(p-1)(q-1)

python代码实现如下:

复制代码
import libnum
e = 65537
n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
pd = e*dp-1

def ext_euclid(a, b):     
    if b == 0:         
        return 1, 0, a     
    else:         
        x, y, q = ext_euclid(b, a % b)       
        x, y = y, (x - (a // b) * y)         
        return x, y, q

def mod_inv(a, b):
    return ext_euclid(a, b)[0] % b   #函数返回的第一个数%b

for i in range(1,e):
    if pd%i == 0:
        if n%(pd//i+1) == 0:     
            p = pd//i+1
            q = n//p
            fn = (p-1)*(q-1)
            d = mod_inv(e,fn)
            m = pow(c,d,n)
            print(libnum.n2s(m))
相关推荐
故事和你911 小时前
洛谷-数据结构1-1-线性表1
开发语言·数据结构·c++·算法·leetcode·动态规划·图论
脱氧核糖核酸__1 小时前
LeetCode热题100——53.最大子数组和(题解+答案+要点)
数据结构·c++·算法·leetcode
脱氧核糖核酸__1 小时前
LeetCode 热题100——42.接雨水(题目+题解+答案)
数据结构·c++·算法·leetcode
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:数列分段 Section I
c++·算法·编程·贪心·csp·信奥赛·线性扫描贪心
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:分糖果
c++·算法·贪心算法·csp·信奥赛·线性扫描贪心·分糖果
_日拱一卒2 小时前
LeetCode:2两数相加
算法·leetcode·职场和发展
py有趣2 小时前
力扣热门100题之零钱兑换
算法·leetcode
董董灿是个攻城狮2 小时前
Opus 4.7 来了,我并不建议你升级
算法
无敌昊哥战神3 小时前
【保姆级题解】力扣17. 电话号码的字母组合 (回溯算法经典入门) | Python/C/C++多语言详解
c语言·c++·python·算法·leetcode
脱氧核糖核酸__3 小时前
LeetCode热题100——238.除了自身以外数组的乘积(题目+题解+答案)
数据结构·c++·算法·leetcode