原理
随机生成两个素数,p , q
令N=p2⋅q,e=N
类似RSA
有Public Key=(e,N)
计算d=N−1 mod φ(pq)
有Private Key=(d,N)
加密和解密
加密:c=mN mod N
解密:m=cd mod pq
计算pq
依据d的产生有n⋅d≡1 mod φ(pq)
任取一个数如2,有2nd≡2 mod pq
得到pq=gcd(n,2nd−2)
实例[2024 国城杯]babyRSA
from Crypto.Util.number import *
n = ?
d = ?
c = ?
pq = GCD(pow(2,n*d,n)-2,n)
print(long_to_bytes(pow(c,d,pq)))
0 条评论