buuctf.crypto.rsa

发布时间 2023-03-27 22:18:40作者: redqx


加密

input[i]=pow(input[i],公钥)%33;

解密

input[i]=pow(input[i],私钥)%33;

术语

公钥:E

模数:N

私钥:D

加密用(E,N)

解密用(D,N)

公钥私钥的制作

  1. 选出2个质数 p,q

  2. N=p*q

  3. T=(p-1)*(q-1)

  4. 选取公钥E, 满足的条件 1<公钥<T ; 公钥是质数 ; 公钥不是T的因数

  5. 选取私钥D, 满足的条件 (私钥x公钥)%T=1 也就是说私钥和公钥是互为逆元的关系

那么flag求解如下
求简单的逆元(已知公钥和模数)

import gmpy2
p=473398607161
q=4511491
e=17
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e,phi_n)
print(d)