CRYPTO
下个棋吧
题目:
先别做题了,flag给你,过来陪我下把棋,对了,别忘了flag要大写,RERBVkFGR0RBWHtWR1ZHWEFYRFZHWEFYRFZWVkZWR1ZYVkdYQX0=
思路:
先 base64 解码
DDAVAFGDAX
然后在棋盘解密
棋盘密码在线加密解密 - 千千秀字
flag:HECTF{1145145201314}
ez_rsa
题目:- from Crypto.Util.number import *
- from gmpy2 import next_prime
- from secret import flag
- e = 65537
- while True:
- p1 = getPrime(512)
- p2 = next_prime(p1)
- q1 = getPrime(250)
- q2 = getPrime(250)
- n1 = p1**2*q1
- n2 = p2**2*q2
- if abs(p1-p2)<p1/(4*q1*q2):
- break
- l = len(flag) // 2
- m1, m2 = bytes_to_long(flag[:l]), bytes_to_long(flag[l:])
- c1 = pow(m1,e,n1)
- c2 = pow(m2,e,n2)
- print('c1 =', c1)
- print('c2 =', c2)
- print('n1 =', n1)
- print('n2 =', n2)
- """
- c1 = 53794102520259772962649045858576221465470825190832934218429615676578733090040151233709954118823187509134204197900878909625807999086331747342514637503295791730180510192956834523005990404866445713234424086559831376810175311081520383413318056594422752551500083114685166907745013622324855991979140245907218436391231529893571051805289332021969063468163881523935479367416921655014639791920
- c2 = 9052082423365224257952169727471511116343636754632940194264502704697852932532482639724493657103678314302886687710898937205955106008040357863303819909329575056725102501066300771840780970209680697874184954776520388520912958918609760491518738565339512830340891355495761329325539914537183981946727807621066415407718405281155516000986687797150964327740274908804298880671020463280815846412
- n1 = 98883753407297608957629424865714335053996022388238735569824164507623692527853962975392303234473035916456899244665285221847772940522588864849967816934720547920870269288918027227609323674530533210183199265184870283022950180411036770713693931074212919932370249829101629879564811122352724775705189146681235092749483273337940646214392591186563201709371435197518622209250725811137856196641
- n2 = 52847447490004248309003888295738534958949920800650087542364666545481208701251931880585683578162296213389552561184640931603466477091024928446523302557870614402843171797849560571453293858739610330175253863157533028976216594152329043556996573601155253747817112184987205405092446153491574442703185973485274472403444657880456022918181503181300476227341269990508005711171556056777832920469
- """
复制代码 解释:
- get_convergents:这个函数计算 \(n_1/n_2\) 的渐近分数。每一对 \((p_{next}, q_{next})\) 都是 \(q_1/q_2\) 的潜在候选者。
- gmpy2.isqrt_rem:快速计算整数平方根并返回余数。如果余数为 0,说明 \(n_1/q_1\) 是完全平方数,我们就找到了 \(p_1\)。
- \(\phi(n)\) 计算:对于 \(n = p^2 q\),其欧拉函数为 \(\phi(n) = n \cdot (1 - 1/p) \cdot (1 - 1/q) = p(p-1)(q-1)\)。
- 拼接 Flag:程序将解密出的 \(m1\) 和 \(m2\) 转回字节串并拼接,即可得到 Flag。
flag:HECTF{cRoss_0v3r_v&ry_yOxi}
simple_math
题目:
[code]from Crypto.Util.number import *from secret import flagdef getmodule(bits): while True: f = getPrime(bits) g = getPrime(bits) p = (f |