攻防世界GFSJ1116 baigeiRSA

题目编号:GFSJ1116

附件下载后是一个out和python文件:

运用RSA的基础算法来解题。

1. 阅读baigei.py

from Crypto.Util.number import inverse

def rsa_decrypt(p, q, e, c):
    # Step 1: 计算 n 和 φ(n)
    n = p * q # n = 33 => 3 * 11
    phi_n = (p - 1) * (q - 1) # φ(n) = 20 => (3 - 1) * (11 - 1)

    # Step 2: 计算私钥 d (e 的模逆): d * e ≡ 1 (mod φ(n)) => 3 * 7 ≡ 1 (mod 20)
    d = inverse(e, phi_n)

    # Step 3: 使用 d 解密密文 c
    m = pow(c, d, n)

    # Step 4: 将解密后的数字转换为字符串
    flag_bytes = m.to_bytes((m.bit_length() + 7) // 8, 'big')
    try:
        flag = flag_bytes.decode('utf-8')
    except UnicodeDecodeError:
        flag = flag_bytes.decode('utf-8', errors='ignore')
    
    return flag

# 示例使用
p = 274539690398523616505159415195049044439
q = 322368694010594584041053487661458382819
e = 65537
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541

flag = rsa_decrypt(p, q, e, c)
print(f"Decrypted flag: {flag}")

2. Yafu分解n为pq

3. 求d,然后计算出m

from Crypto.Util.number import inverse

# 使用yafu分解n得到p和q: n to p*q
# .\yafu-x64.exe "factor(88503001447845031603457048661635807319447136634748350130947825183012205093541)"
# 根据p q e c 计算解密后的明文flag

def rsa_decrypt(p, q, e, c):
    # Step 1: 计算 n 和 φ(n)
    n = p * q # n = 33 => 3 * 11
    phi_n = (p - 1) * (q - 1) # φ(n) = 20 => (3 - 1) * (11 - 1)

    # Step 2: 计算私钥 d (e 的模逆): d * e ≡ 1 (mod φ(n)) => 3 * 7 ≡ 1 (mod 20)
    d = inverse(e, phi_n)

    # Step 3: 使用 d 解密密文 c
    m = pow(c, d, n)

    # Step 4: 将解密后的数字转换为字符串
    flag_bytes = m.to_bytes((m.bit_length() + 7) // 8, 'big')
    try:
        flag = flag_bytes.decode('utf-8')
    except UnicodeD
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值