CISCN

CISCN 密码学write up

蹭了蹭队友的比赛,扔了三道让我直接自闭的题目

rsa

赛中因为没有其他的hint,考虑的是直接用yafu对n进行分解

[没钱的人学什么密码.jpg]

赛后发现factor网站对该数据的分解进行了收录[emmm……]

和之前的想法大概一样,考点就是对n的分解问题,能分解就能做

赛后看到有人说对n进行开方爆破,尝试了一下

出于方便,肯定先假设素数数量为3或4,试不出来就算了

因为没有其他hint的题目,可以考虑三素数的差值不大

代码如下:

爆破部分:

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
26
27
28
#!python2
#author: Fhakz
#-*-coding=utf-8-*-

import gmpy2

n = xx

flag = True

mid = gmpy2.iroot(n, 3)[0]

while(flag):
sub = n % (mid - k)
add = n % (mid + k)
if sub == 0:
flag = False
print (mid - k)
elif add == 0:
flag = False
print (mid + k)
else:
k += 1
continue

#after
n = n // (p)
#sqrt again

解密部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!python
#author: Fhawkz
#-*-coding=utf-8-*-

import gmpy2
import libnum

n =
p =
q =
r =
e = 65537
c =

assert(gmpy2.gcd(p, q) and gmpy2.gcd(p, r) and gmpy2.gcd(q, r))

phi = (p - 1) * (q - 1) * (r - 1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)

print libnum.n2s(m)

bd

被日穿的密码签到题[唯一看得懂的题目]

给的py代码,生成一个200位的d,并求d关于模phi的逆

打印c,e,n

因为e很大,可以考虑先使用winner attack

备好的脚本跑起来得到d,然后解密即可……[因为不懂数学 不会搞 直接嫖别人的]

脚本地址:[忘了 自己上git找吧]

解密:

1
2
3
4
gmpy2.libnum2
n, c, d
m = pow(c, d, n)
print libnum.n2s(m)

lfsr

会了在说 告辞

# 相关文章
  1.RSA
评论

:D 一言句子获取中...