关于RSA有话说
侧边栏壁纸
  • 累计撰写 4 篇文章
  • 累计收到 7 条评论

关于RSA有话说

xorb7
2022-07-29 / 1 评论 / 42 阅读 / 正在检测是否收录...

最近学习了一些关于Crypto的知识,我把重点放到了RSA上面,它有很多题型,就是因为RSA他是一个很好,很标准的模板,它上面不只是展示一些RSA基础的东西,它还可以把一些离散对数,椭圆曲线,格子上的一些东西放到RSA模板上...说实话这些对于我来说有亿点点难!
首先,深入了解了一下数学原理,比如欧拉函数,欧拉定理模逆及指数,其中,欧拉定理十分重要。

数学原理图

除此之外还需要两个常见的Python包下的函数。

#Crypto.Util.number
bytes_to_long() & long_to_bytes()
getPrime() & getStrongPrime()
inverse() & pow()

#gmpy2
iroot()
gcdext()
next_prime()

RSA的算法

解密过程:

解密过程

加密过程:

加密过程

使用代码描述:

from Crypto.Util.number import * 

#generate public key and private key
p,q = getPrime(512),getPrime(512)
n = p*q
phi =  (p-1)*(q-1)

e = getPrime(20)
while GCD(e,phi) != 1;
    e = getPrime(20)
d = inverse(e,phi)

#encrypt
flag = b'flag{te3t_f1@g}'
m = bytes_to_long(flag)
c = pow(em,e,n)

#decrypt
M = pow(c,d,n)
FLAG = long_to_bytes(M)
print(FLAG)
1

评论 (1)

取消
  1. 头像
    zxrdfw
    Windows 10 · FireFox

    666666666666666666

    回复