1,首先明白RSA加密过程
- 选一对不相等且足够大的质数p,q
- 二者相乘q*p
- 计算n的欧拉函数 φ(n)=(q-1)(p-1)
- 选一个与φ(n)互质的整数 e (1<e<φ(n))
- 计算出e对φ(n)的模反元素d de mod φ(n)=1
加密 M的e次方对n取模=C 解密 C的d次方对n取模=M
2,查看源代码
from Crypto.Util.number import bytes_to_long,inverse,getPrime
from flag import flag
m = bytes_to_long(flag)
p = getPrime(1024)
q = getPrime(1024)
n = p*q
print(n)
e = 65537
c = pow(m,e,n)
pq = p*(q-1)
qp = q*(p-1)
print("c=",c)
print("n=",n)
print("pq=",pq)
print("qp=",qp)
'''
c= 872226907597064443425333959275851278816040891270738763259155213017570784395068431508325049401005543539187903628510381026359195143782941443864030756164572134785965980713805