前言

数学没学明白就是吃亏 …

RSA

先盗图

RSA是一种非对称加密算法,它由 公钥(ne),私钥(nd),明文M和密文C组成

mod运算

模运算就是取余

 5 mod 3 = 2

同余运算就是两个整数a,b 他们除以M所得余数相等

a = b(mod m)
11 = 5(mod 3)

再次盗图…

加密算法

秘钥对生成

n → L → e → d

因式分解

https://factordb.com/

yafu

把N保存到1.txt(最后要有换行符)

简单加密解密脚本

解密

import libnum
import gmpy2
 
n = 12163241791483524957316806288597760862288981689931968345271813765985026429745857
e = 11
p = 3487583947589437589237958723892346254567
q = 3487583947589437589237958723892346254871
assert n==p*q


c = 3079810359319238928727602198449362532122827974473968422037011227516212995430600
d = gmpy2.invert(e,(p-1)*(q-1))
m = pow(c,d,n)

print libnum.n2s(m)

加密

import libnum
import gmpy2

m = 'flag{just-s0-s0}'
m = libnum.s2n(m)

p = 3487583947589437589237958723892346254567
q = 3487583947589437589237958723892346254871

n = 12163241791483524957316806288597760862288981689931968345271813765985026429745857
e = 11
assert n == p*q


c = pow(m,e,n)


print c