ctfhub破解数据加密

某工控厂商自行研发了一套加密系统,这样的话只要不是系统内部人员,即使数据被窃听没关系了。你截获了一段密文:109930883401687215730636522935643539707,请进行解密,flag形式为 flag{}

题目考点

  • RSA

解题思路

Rabin密码体制是RSA密码体制的一种,假定模数n=pqn=pq不能被分解,该类体制对于选择明文攻击是计算安全的。因此,Rabin密码体制提供了一个可证明安全的密码体制的例子:假定分解整数问题是整数上不可行的,那么Rabin密码体制是安全的。

Thm1 (Rabin密码体制)设n=pqn=pq,其中ppqq是素数,且p,q≡3(mod4)p,q≡3(mod4)

P=C=Z⋆nP=C=Zn⋆,且定义 对K=(n,p,q)K=(n,p,q),定义 : $$ eK(x)=x2(modn)和 dK=y√(modn) $$

n为公钥,p和q为私钥。

注:条件p,q≡3(mod4)可以省去,条件P=C=Zn⋆也可以弱化为P=C=Zn,只是在使用更多的限制性描述的时候,简化了许多方面的计算和密码体制分析

已知:e=2

通过分解,得到p=13691382465774455051q=1084126018911527523

编写脚本解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import binascii
import gmpy2
from libnum import *

c = 109930883401687215730636522935643539707
e = 2
p = 13691382465774455051
q = 1084126018911527523
n = p * q

mp = pow(c, (p + 1) / 4, p)
mq = pow(c, (q + 1) / 4, q)

inv_p = gmpy2.invert(p, q)
inv_q = gmpy2.invert(q, p)

a = (inv_p * p * mq + inv_q * q * mp) % n
b = n - int(a)
c = (inv_p * p * mq - inv_q * q * mp) % n
d = n - int(c)

print(a)
print(b)
print(c)
print(d)

Flag

1
flag{flag_EnCryp1}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值