最近做题遇到好几次RSA解密,最近密码学课也学到了 RSA密码算法,写一篇文章促进对RSA的理解。
一:RSA的基本原理的理解:
1.学习RSA加密得知道欧拉函数,想理解欧拉函数又得弄明白同余类与剩余系的知识,这些是基础。
2.RSA的密钥生成原理:
第一步:选择两个较大素数P,Q.
第二步:计算n=pq,z=(p-1)(q-1)。
第三步:随机选取e(其中e 第四步:选取d使得ed-1能够被z完全整除。ed mod z=1 第五部:公钥是(n,e) 私钥是(n,d) 二 下面以SUCTF 2019 signin记录一下RSA的应用与解密方法 这里函数分析得到 N=103461035900816914121390101299049044413950405173712170434161686539878160984549 c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35 e = 65537 第一步我们要求取的是pq两个素数的值 从其他大佬那里偷来神器RSAyafu 他可以讲给定的数分成两个相乘的素数 直呼nb p = 366669102002966856876605669837014229419 q = 282164587459512124844245113950593348271 下面就是使用python解密了 (先得安装gmpy2库) 学习一下gmpy2库的使用 gmpy2.invert(a,c) 对a,求b,使得a*b=1(mod c) gmpy2.powmod(a,n,p) 对于给定的整数p,n,a,计算aⁿ mod p 补充一下binascii.unhexlify函数 unhexlify(hexstr)将十六进制转换为二进制形式。 hex()函数记得加[2:]去掉开头的0x。



