原理
随机生成两个素数,p , q
令N=p2cdotq,e=N
类似RSA
有PublicKey=(e,N)
计算d=N−1modvarphi(pq)
有PrivateKey=(d,N)
加密和解密
加密:c=mNmodN
解密:m=cdmodpq
计算pq
依据d的产生有ncdotdequiv1modvarphi(pq)
任取一个数如2,有2ndequiv2modpq
得到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 条评论