RSA加密算法

本文介绍了数学和密码学的基础概念,包括素数和互质数的定义,模指数运算的原理,并详细阐述了RSA加密算法的工作流程和密钥生成过程。通过示例展示了如何进行加密和解密操作,揭示了其安全性基于大整数因数分解的难题。
摘要由CSDN通过智能技术生成

参考文章

https://blog.csdn.net/bian_h_f612701198412/article/details/79358771
https://blog.csdn.net/u013073067/article/details/86674474

什么是“素数”?

素数是只能表示它自己和1的乘积,不能表示为任何其它两个整数的乘积。13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。

什么是“互质数”(或“互素数”)?

公约数只有1的两个数,叫做互质数。
(1)两个质数一定是互质数。例如,2与7、13与19。
(2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10。
(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。
(4)相邻的两个自然数是互质数。如 15与 16。
(5)相邻的两个奇数是互质数。如 49与 51。
(6)大数是质数的两个数是互质数。如97与88。

什么是模指数运算?

模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2等等。
模指数运算就是先做指数运算,取其结果再做模运算。如(5^3) mod 7 = (125 mod 7) = 6。

什么是RSA加密算法?

RSA加密算法的安全性是基于对极大整数做因数分解的困难

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。例如:
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

密钥生成过程

1、 找两个质数 P 和 Q ;
2、 计算他们的乘积 n = P * Q
3、 计算 n 的欧拉函数 φ(n):φ(n) = φ(P * Q) = (P - 1)(Q - 1)
4、 选择一个整数 e,条件是 1< e < φ(n),且 e 与 φ(n) 互质
5、 计算e对于 φ(n) 的模反元素d,可以使得 e * d 除以 φ(n) 的余数为 1
( 1<d<e,且e*d mod φ(n) = 1 ) 即:d=e^-1 ( mod φ(n) )
6、 公钥(n,e);私钥(n,d);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bkAdiD2G-1647671793940)(https://note.youdao.com/yws/res/9114/WEBRESOURCEbe780d61a10ff4ef323943bc81f5ce88)]

加解密过程

c:密文
m:明文
N:两个质数的乘积
e: 公钥
D: 私钥 
公钥与私钥关系: e*d mod φ(n) = 1
加密:c = m^e mod N
解密:m = c^d mod N

例题

例1:在RSA加密体制中, 已知素数 p = 7, q = 11, 公钥 e = 13, 试计算私钥 d 并给出对明文 m = 5 的加密,求其密文. 已知密文 c = 15, 求其明文

n=pq=77
φ(n)=(p-1)(q-1)=60
e*d mod φ(n) = 1
即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

例2:在一个RSA系统中,一个给定用户的公开秘钥是e=31,n=3599.求这个用户的私有秘钥.

n=59*61
φ(n) =58*60=3480
由公式得e*d mod φ(n) = 1
即31*d mod 3480=1
解得d=3031

例3:使用RSA公钥系统中如果截取了发送给其他用户的密文c=10,若此用户的公钥为e=5,N=35,请问明文的内容是什么?

由题易知,两个质数分别为5和7
所以欧拉函数为φ(N)=(5-1)*(7-1)=24
由公式e*d mod φ(N) = 1
5*d mod 24=1,所以d为5
由公式: m = c^d mod N
m=10^5 mod 35=5
所以密文内容为5
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值