RSA算法

本文介绍了RSA公开密钥密码体制的工作原理,包括大素数的选取、欧拉函数、费马小定理及其在算法中的作用。阐述了RSA加密和解密的过程,并讨论了在密码学中RSA的安全性和可能的攻击方式。此外,还提到了RSA在选择密码攻击中的应用场景。同时,提醒读者在使用Python的Crypto库时可能出现的问题及解决方案。
摘要由CSDN通过智能技术生成

最近在做题的时候发现好多密码题都会有RSA相关内容,包括比赛也是,这个东西既然那么重要,就简单地总结一下吧

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

RSA算法主要由互质数和欧拉函数组成,分别简单地介绍一下:

如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系

数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目.

φ函数的值:

    φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))…..(1-1/p(n)) 其中p(1),p(2)…p(n)为x

的所有质因数;x是正整数; φ(1)=1(唯一和1互质的数,且小于等于1)。注意:每种质因数只有一个。

     例如:

         φ(10)=10×(1-1/2)×(1-1/5)=4;

         1 3 7 9

         φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;

         φ(49)=49×(1-1/7)=42;

其中欧拉函数是RSA算法最重要的部分

跟欧拉函数相关的还有费马小定理

如果p是一个质数,而整数a不是p的倍数,则有a^(p-1)≡1(mod p)

费马小定理通常用来检验一个数是否是素数,是素数的必要非充分条件。

然而满足费马小定理检验的数未必是素数,这种合数叫做卡迈克尔数

RSA算法的具体描述如下:(百度的)

(1)先找出两个质数p,q,再计算公共模数n,利用欧拉函数计算φ(n),n=p*q,φ(n) =(p-1)*(q-1);

(2)任意选取一个大整数e,满足gcd(e,φ(n))=1;整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用);

(3)确定的解密钥d,满足(de)modφ(n)=1,即de=k*φ(n) +1,k>=1是一个任意的整数;所以,若知道e和φ(n) ,则很容易计算出d ;

(4)公开整数n和e,秘密保存d;

(5)将明文m(m<n是一个整数)加密成密文c,加密算法为 c=E(m)=pow(m,e)*mod n

(6)将密文c解密为明文m,解密算法为:m=D(c)=pow(c,d)*mod n;

然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密 。

RSA在密码学中的应用:

1.RSA的选择密码攻击

所谓“选择密文攻击”,就是密码分析者并不知道解密的密钥,但是给出任意的消息,密码分析者都可以将其加密,再解密。或者说,密码分析者能获得解密服务。

设攻击者为A,密文接受者为T,公钥对为(e, n),私钥为d,T收到的密文为c,c对应的明文为m。
现在A想知道m = c^d mod n,但是他不想分解n。于是T找了一个随机数r,r < n。他进行如下计算:x = r^e mod n (对r用T的公钥加密,得到临时密文x)
y = (x * c) mod n (将临时密文x与密文c相乘)
t = r^(-1) mod n

A利用了RSA加密和解密过程的特点,即:
如果x = r^e mod n,那么 r = x^d mod n

现在A要做的是使T用d对t签名:u = t^d mod n。A需要获得u,然后计算
m = (t * u) mod n

2.RSA的选择密码攻击:

当公钥e取较小的值,虽然会使加密变得易于实现,速度有所提高,但这样做也是不安全的。最简单的办法就是e和d都取较大的值

常见的RSA题目之前也有提到过,后续会继续补充的。。。不过在这类题目中,用到最多的是Crypto库,python中记得安装,如果开始安装好了以后还显示没有这个模板,那你可以试试看下图的方式:

 按照上图来,然后原本的crypto是小写,你把改成大写就好了。

emm......暂时就这么多,后面想到了再补充吧。。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值