本项目为面向上海大学网络空间安全专业本科生(2020级、2021级)的暑期实训课程。 内容包括:
本课程相关材料均已在 GitHub-LuminolT/security-summercamp 备份。
'flag{[0-9A-Za-z=_]*}'
新佛曰:諸隸僧降冥吽諸陀摩隸僧缽冥薩願耨咤陀願羅咤喃迦祗蜜耨阿嚤僧喼所聞薩闍嚩聞念須亦心耨冥心阿冥聞慧蜜咤冥心念訶冥嚩冥聞冥念降咤冥劫耨降寂願慧般祗闍隸冥修阿闍莊陀冥莊冥劫莊嚴冥宣隸阿摩嚩蜜心咒冥闍我須咒慧冥闍諦羅迦聞慧婆劫嘚慧咒迦慧慧我慧冥闍念劫嘇隸蜜祗伏嚤慧咒修缽聞色祗冥闍僧嘚迦降阿莊冥慧聞蜜降咤寂波嘇塞薩如囑
'flag{[0-9A-Za-z=_]*}'
from Crypto.Util.number import getPrime, bytes_to_long
from gmpy2 import is_prime, invert
from typing import Tuple
from secert import flag
def gen_rsa_param() -> Tuple[int, int, int, int, int]:
"""Generate usable RSA parameters.
params:
None
return:
a tuple, including `p, q, n, e, d`
"""
p = getPrime(256)
q = p + 2
while True:
q += 2
if is_prime(q):
break
assert p < q
n = p * q
phi_n = (p-1) * (q-1)
e = 0x10001
d = invert(e, phi_n)
return p, q, n, e, d
def rsa_encrypt(m: str, *args) -> str:
"""Generate usable RSA parameters.
params:
m: message to be encrypted
args: RSA parameters
return:
a string, which is the encrypted message
"""
assert len(args) == 5
p, q, n, e, d = args
m = bytes_to_long(m)
c = pow(m, e, n)
return c
params = gen_rsa_param()
print(rsa_encrypt(flag, *params))
print(params[2])
# 5796768148637887491255587039409951397511832995737366433505141785703232675749200657380232851343254281355390391562734825283953711907092653161783752372166386
# 7948512242985881433771203281939490726039994357587772712416312873824297606161653053722572268861029945737411249803561023517431875922105282741637330609169129