RSA加密算法详解

RSA是一种非对称加密算法,在讲RSA之前,有必要了解一下非对称加密的原理

非对称加密 指的是加密和解密所使用的密钥是不同的。
一把作为进行公开的公钥,一把作为私钥,公钥进行加密,私钥进行解密,同时被私钥加密的数据也可以用公钥进行解密。
**在实际使用时,私钥一般保存在发布者手中,是私有的并且不对外进行公开,只有公钥是对外进行发布的,这样就只有私钥的持有者才能将数据进行解密,如此这种加密方式安全系数高,因为它不用讲解密密钥进行传递,从而没有在传递过程中被截获的风险,破解密文几乎不可能。
**但是算法效率低,常用于加密数据量小的数据,常和对称加密配合使用,使用非对称加密去加密对称加密的密钥。
**事实上,公钥加密算法很少用于数据加密,通常用来做身份认证。

身份认证 指的是让他人相信,这个消息确实是你发出去的,原理是发送方用自己的私钥对数据进行数字签名,把消息发送给接受方,收到消息后,通过发送方的公钥进行认证。

详解一下互质概念:如果两个正整数,除了1以外,这两个数没有其他公共因子,那么这两个数就为互质关系。

既然RSA加密算法用到了互质,那么就不得不提欧拉函数了:
欧拉函数:1~N中所有与N互质的数的个数,记作φ(N)。

我们知道一个数N可以进行分解质因数,即N=p’1 * p’2 * p’3 * … p’k,其中p’1,p’2,p’3 … p’k为质因子;
例如16=2 * 2 * 2 * 2;18=2 * 3 * 3;

我们取互不相等的质因素p1,p2,p3,…,pk;
得到φ(N)=N * (1-(1/p1)) * (1-(1/p2)) * …* (1-(1/pk));
例如φ(16)=16*(1-(1/2))=8,共有8个数与16互质,即1,3,5,7,9,11,13,15;
φ(18)=18 * (1-(1/2)) * (1-(1/3))=6,共有6个数与18互质,即1,5,7,11,13,17;
又如φ(25)=25 * (1-(1/5))=20,共有20个数与25互质,即1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24;

RSA算法需要取模运算,就需要知道模反元素
如果两个正整数a与b互质,那么一定能找到整数c,
使得ac mod b = 1。

算法过程:
1)选择一个不同的、足够大的素数p,q;
2)计算n=p * q;
3)计算f(n)=(p-1) * (q-1),同时对p,q严加保密,不让任何人知道;
4)找一个与f(n)互质的数e作为公钥指数,且1<e<f(n);
5)计算私钥指数d,使得d满足(d * e) mod f(n)=1;
6)公钥KU=(e,n),私钥KR=(d,n);
7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,加密过程为:C=M^e mod n;
8)解密过程为:M=C^d mod n。

RSA算法的优点:
**由于加解密过程的所需要的密钥不同,无法通过公钥推算出私钥,所以安全性高;
**通常用于数字签名身份认证(使用RSA算法,发送方用自己的私钥对数据进行数字签名,把消息发送给接受方,收到消息后,通过发送方的公钥进行认证,由于私钥保密只有一个人拥有,所以形成不可抵赖性)

RSA算法的缺点:
**加解密效率不高,所以一般用来对对称加密的密钥进行加密。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值