一、
1、两个大素数:p ,q(验证13是否是素数则输入13,显示结果为13=13 ,可见13是素数)
2、模数n: n=p*q(分解出素数p和q的网站http://www.factordb.com/)
3、计算欧拉函数φ(n) = (p-1)*(q-1)
4、公钥指数:e 与f(n)互质,且与1<e<f(n) a mod b =1 一般为65537
5、私钥指数 d 满足 e * d = 1 (mod(f(n)))
6、公钥={n , e} 私钥 = {n , e}
二、加解密过程(参考https://blog.csdn.net/qq_42880719/article/details/114179370)
1、加密:cipher (密文)= plain ^ e mod n
加密过程举例
首先取一个明文m,假设为4
选择不相等的质数,假设q=3,p=11
计算n = 33
计算φ(n) = (3-1)(11-1) = 20
选择一个整数e,假设e=3
计算d ≡ e⁻¹ ≡ 7 mod 20,即d = 7
计算mᵉ ≡ c mod n,即 64 ≡ 31 mod 33,得到c = 31
此时得到密文c = 31,公钥对(33,3),私钥对(33,7)
2、解密:plain (明文)= cipher ^d mod n
解密过程举例
假设只知道n=33,c=31,e=3
首先分解n,n=11·3
其次计算欧拉数φ(n) = (11-1)·(3-1)=20
计算模反元素d,d = (20+1)/ 3 =7
解密 cᵈ ≡ m mod n,即31⁷ ≡ m mod 33,计算得到 m = 4
三、RSA整数分解
假设我们从题目获得了公钥(N,e)和待解密的密文c,由RSA的加解密过程,我们知道,如果要解密密文,我们要得到e的逆元d,而d是要我们去求解的。
分解n的解法:
(1)若n较小,直接分解
(2)factordb
若n较大,在线分解:http://www.factordb.com/
将n=1455925529734358105461406532259911790807347616464991065301847分解为1201147059438530786835365194567和1212112637077862917192191913841
(3)yafu : p和q相差较大或相差较小时,可快速分解
下载地址:yafu download | SourceForge.net
(4) GGNFS和MSIEVE分解 :可使用RsaCtfTool
一般题目中,若是可分解,使用yafu或者msieve即可分解。
(5)特殊情况下,可使用相关脚本解
参考https://bbs.kanxue.com/thread-266648.htm
标签:13,33,31,解密,分解,Rsa1,mod From: https://www.cnblogs.com/Lyjia-n/p/18105943