RSA学习小结

这一段在做CTF时经常遇到与RSA加密有关的Crypto题,作为萌新的我一脸懵逼。所以在网上找了一些RSA的相关资料学习了一下。在此做一个简单的总结。

RSA介绍

RSA加密算法是一种非对称加密算法,于1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。在在公开密钥加密和电子商业中RSA被广泛使用。

关于对称加密和非对称加密的区别,我会继续学习,争取在下一篇博客对两者做一个介绍和区分。

RSA加密的实现

加密前的准备

假设有两个小憨憨分别是Alice和Bob。Alice要向Bod传递信息m,这里的m就是明文。为了保证他们传递的信息能够保密,需要对信息进行加密,这样即使信息被人窃听也无法知道他们传递消息的内容。聪明的Bob就想到了一个加密方法,首先他找到两个足够大的质数p,q(确实任意质数都可以,但是使用足够大的质数能确保信息难以被破解)
然后他计算找出一个n

n=p*q

再计算

φ(n)=(p-1)*(q-1)

这里的φ(n)被称作欧拉函数
接下来求e,e需要满足 1<e<φ(n),且 e与φ(n)互质
这个e(encode)就是公钥,然后Bob再求出私钥d(decode)
d满足 e*d除以φ(n)余1,
(e*d)modφ(n)=1

这样Alice和Bob就完成了准备工作,之后的加密通信能够实现了。

加密的实现

在通信前,Bob要先将计算好的公钥e和计算好的n传递给Alice,Alice利用

c=me mod n

这样就得到密文c,然后Alice就可以将c传递给Bob,值得注意的是,上述两次信息的传递都不用防备窃听,甚至可以公开传递。
Bob拿到密文c后,就可以利用他的私钥进行解密了,解密方法如下:

m=cd mod n

所以Alice和Bob就安全的传递了一次信息。

RSA的安全性

通过上述加密过程我们可以知道,只有密文c,私钥en被传递。如果有人窃听到了这三个信息,为了解密他需要求出私钥d,根据d的算法,这个窃听者还要先算出φ(n)。又因为φ(n)=(p-1)*(q-1),窃听者还需分解n,计算出pq(窃听者:好麻烦啊,我还是算了吧)
在上面p和q的选取时,我也提到了p和q要足够大,是因为p和q太小,n很容易被分解,举个栗子n=21,p和q分别为多少,答案很显而易见。
在日常生活中的加密中,n常常是1024位的二进制数,分解起来比较困难(比较困难你个头啊,明明是非常困难)。再加之私钥和公钥定期都会进行更换,就更确保了RSA加密的安全性。

写在最后

本人也是初学者,如果文章中有错误和不足,请您尽管指出。我会在后续的学习中不断完善。感谢阅读。skr~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值