RSA算法
第一步:生成秘钥对,即公钥和私钥
1:随机找两个质数 P 和 Q ,P 与 Q 越大,越安全。(随机找两个质数)
比如 P = 67 ,Q = 71。计算他们的乘积 n = P * Q = 4757 ,转化为二进为 1001010010101,该加密算法即为 13 位,实际算法是 1024 位 或 2048 位,位数越长,算法越难被破解。
2:计算 n 的欧拉函数 φ(n)。(m = φ(n) = (P-1)(Q-1) )
φ(n) 表示在小于等于 n 的正整数之中,与 n 构成互质关系的数的个数。例如:在 1 到 8 之中,与 8 形成互质关系的是1、3、5、7,所以 φ(n) = 4。 如果 n = P * Q,P 与 Q 均为质数,则 φ(n) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1) 。 本例中 φ(n) = 66 * 70 = 4620,这里记为 m, m = φ(n) = 4620
3:随机选择一个整数 e,条件是1< e < m,且 e 与 m 互质。
公约数只有 1 的两个整数,叫做互质整数,这里我们随机选择 e = 101 请注意不要选择 4619,如果选这个,则公钥和私钥将变得相同。
4:有一个整数 d,可以使得 ed 除以 m 的余数为 1。( ed%m=1)
但是注意e不能和d一样,这样就会导致公钥和私钥一样。
5:生成公钥和私钥
公钥:(n,e)
私钥:(n,d)
第二步:加密解密
1:加密
a e m o d n = b ( a 是 明 文 , b 是 密 文 ) a^e\bmod n=b(a是明文,b是密文) aemodn=b(a是明文,b是密文)
2:解密
a e m o d n = b ( a 是 密 文 , b 是 明 文 ) a^e\bmod n=b(a是密文,b是明文) aemodn=b(a是密文,b是明文)