from Crypto.Util.number import * from os import getenv
flag = getenv("FLAG")
defchal(): e = 65537 phi = e while GCD(e, phi) != 1: p = getPrime(512) q = getPrime(512) n = p * q phi = (p - 1) * (q - 1) d = pow(e, -1, phi)
print(f"Alice -> Bob :The public key {{'n':{hex(n)},'e':{hex(e)}}}")
mess = b"I l0ve you---Bob" m = long_to_bytes(mess) print(f"Bob -> Alice :The encrypted message {{'c':{hex(pow(m,e,n))}}}")
print("You can change the message Bob sent to Alice to help them study") c = int(input("Please input the encrypted message (in hex)"),16) message = bytes_to_long(pow(c, d, n))
if message == b"Please keep away from me, I had to study hard": print(flag)
if __name__ == "__main__": chal()
message≡cdmod(n) c≡(message)emod(n)
😊 快乐王子
from Crypto.Util.number import * from secret import flag
p = getPrime(1024) e = 0x10001 m = bytes_to_long(flag) c = pow(m, e, p) print(f"{c = }") print(f"{p = }") print(f"{e = }")
""" c = 94933879657019461326828225836780893807400776971235851915066913763683310991309173340557406241075423730347734496950200533575670368627940332981373490699790129749566410150515572724861054835984481560010703671000134856172771048226985683127931612726872883032424421652451138053080169329061035399029500996664744339122 p = 95855494001984957858370499068727677198914989191424438110665096413160144326163172754989614826773164540454657124564339977787908884977761972381683644262327181870316948741995100389232827854834171961842471759416662384703036141181130961351694018591639607368956764660290603455362026824834672239118472771981866952759 e = 65537 """
from Crypto.Util.number import * c = p = e = 65537 d = inverse(e, p-1) print(long_to_bytes(pow(c, d, p)).decode())
PS: 单素数十分不安全
🦆 滕王阁序
from Crypto.Util.number import * from random import randint from hashlib import sha256
N = 2**32
a = randint(1, N) b = randint(1, N) seed = randint(1, N)
defgen(): global seed seed = (seed * a + b) % N return seed
n = 10 lst = [] for i inrange(10): lst.append(gen())
print(lst[:3]) flag = "cnss{" + sha256(str(lst).encode()).digest().hex() + "}"
""" [1191871952, 424959397, 2071728008] """
简单LCG
from Crypto.Util.number import * from hashlib import sha256
defgen(): global seed seed = (seed * a + b) % N return seed
N = 2**32 lst = [1191871952, 424959397, 2071728008] a = (lst[2]-lst[1]) * inverse(lst[1]-lst[0], N) % N b = (lst[1] - a * lst[0]) % N seed = (lst[0]-b)*inverse(a, N) % N lst = [] for i inrange(10): lst.append(gen()) flag = "cnss{" + sha256(str(lst).encode()).digest().hex() + "}" print(flag)
😴 苦昼短
from Crypto.Util.number import getPrime, bytes_to_long, getRandomNBitInteger