buu RSA & what(base64隐写术)

这篇博客探讨了RSA加密中的共模攻击问题,并揭示了如何使用Base64隐写术隐藏信息。作者指出,加密脚本中的while循环是关键,共模攻击后并未直接得到解密结果。进一步分析提示,可能需要关注Base64解码时末尾被舍去的部分,这部分可能隐藏了重要的解密线索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件

在这里插入图片描述

加密脚本

from Crypto.Util.number import bytes_to_long, getPrime
from random import randint
from gmpy2 import powmod

p = getPrime(2048)
q = getPrime(2048)
N = p*q
Phi = (p-1)*(q-1)
def get_enc_key(N,Phi):
    e = getPrime(N)
    if Phi % e == 0:
        return get_enc_key(N, Phi)
    else:
        return e
e1 = get_enc_key(randint(10, 12), Phi)
e2 = get_enc_key(randint(10, 12), Phi)

fr = open(r"./base64", "rb")#flag is in this file
f1 = open(r"./HUB1", "wb")
f2 = open(r"./HUB2", "wb")
base64 = fr.read(255)
f1.write("%d\n%d\n" % (N, e1))
f2.write("%d\n%d\n" % (N, e2))
while len(base64)>0:
    pt = bytes_to_long(base64)
    ct1 = powmod(pt, e1, N)
    ct2 = powmod(pt, e2, N)
    f1.write("\n%d" % ct1)
    f2.write("\n%d" % ct2)
    base64 = fr.read(255)
fr.close()
f1.close()
f2.close()


分析

加密脚本的意思主要集中在while循环中,告诉了我们ct1,ct2,e1,e2,和相同的N.于是很容易想到共模攻击.
但是共模攻击后发现得到的似乎还不是最终答案.
在这里插入图片描述
这段文字告诉我们flag被隐藏了,于是想到base64隐写术

base64隐写术

base64解码过程

在这里插入图片描述
在正常解码的过程中,末尾的不足8位的地方都被舍去了,可是正是这一部分可能藏着信息.

decrypto脚本

def exgcd(m, n, x, y):
    if n == 0:
        x = 1
        y = 0
        return (m, x, y)
    a1 = b 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值