题目
from Crypto.Util.number import *
from Crypto.PublicKey import DSA
from Crypto.Hash import SHA
from gmpy2 import invert,powmod
import random
from secret import flag,m1,m2,ul,vl,wl
def encrypt():
key = DSA.generate(int(1024))
q = key.q
p = key.p
g = key.g
x1 = bytes_to_long(flag[:len(flag)//2])
x2 = bytes_to_long(flag[len(flag)//2:])
assert x1<q and x2<q
t = powmod(g, p*q-(p+q), p*q)
hm1 = bytes_to_long(SHA.new(m1).digest())
hm2 = bytes_to_long(SHA.new(m2).digest())
k = random.randint(1, q-1)
r1 = powmod(g, k, p) % q
s1 = (hm1 + x1*r1) * invert(k, q) % q
s2 = (hm2 + x1*r1) * invert(k, q) % q
r2 = powmod(g, x1, p) % q
s3 = (hm1 + x2*r2) * invert(k, q) % q
print(p*q, (p-1)//q, t, sep=', ')
print(r1, s1, s2, sep=', ')
print(r2, s3, sep=', ')
def main():
for i in range(len(ul)):
assert ul[i]**2 - wl[i]* vl[i]**2==1
e = 7
cl1 <