大家好,又见面了,我是你们的朋友全栈君。
这是我自己在学习RSA加密算法的时候自己整理的笔记,如需转载请注明出处
RSA加密算法
我这里就不对RSA的发明背景做介绍了,你只要知道RSA加密算法是非常非常重要的加密算法,放在现在的时代亦是如此。
RSA加密算法的安全性是基于对极大整数做因数分解的困难。 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。例如: (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密。 (3)乙方得到加密后的信息,用私钥解密 公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
密钥生成过程
1、 随机找两个质数 P 和 Q ,P 与 Q 越大,越安全; 2、 计算他们的乘积 n = P * Q 3、 计算 n 的欧拉函数 φ(n):φ(n) = φ(P * Q)= φ(P – 1)φ(Q – 1) = (P – 1)(Q – 1) 4、 随机选择一个整数 e,条件是 1< e < φ(n),且 e 与 φ(n) 互质 5、 计算e对于 φ(n) 的模反元素d,可以使得 ed 除以 φ(n) 的余数为 1 ( 1<d<e,且ed mod φ(n) = 1 ) 即:d=e^-1 ( mod φ(n) ) 6、 公钥(n,e);私钥(n,d);
RSA使用公共指数e和私有指数d。指数e是每个人都知道的公钥(e, N)的一部分。使用公钥e加密的消息只能使用私钥d解密
加解密过程
c:密文 m:明文 加密:c = m^e mod N 解密:m = c^d mod N
例题
例题:在RSA加密体制中, 已知素数 p = 7, q = 11, 公钥 e = 13, 试计算私钥 d 并给出对明文 m = 5 的加密,求其密文. 已知密文 c = 15, 求其明文
解: n=pq=77 φ(n)=(p-1)(q-1)=60 ed≡1 mod φ(n) 即13d mod 60 = 1 解得:d = 37 公钥(n,e)=(77,13) 密文c = m^e mod n = 5^13 mod 77 = 26 私钥(n,d)=(77,37) 明文m = c^d mod n = 15^37 mod 77 = 71
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131267.html原文链接:https://javaforall.cn