RSA算法学习心得

RSA算法属于非对称加密算法的一种,也是目前世界上最重要的加密算法。
先来说一下该算法运行的过程:
1,选择两个不同的质数,通常是比较大的,如512位以上,但是在学习中或者做自己加密性需求不是很大的项目时可以适当用比较小的,设这两个数为a,b(因为这两个质数的大小关系到破解的难度)
2,计算出这两个数的乘积c,此时得到的c就是密钥长度,假设a,b是11和13,此时c就是143,转化为二进制是10000101,一共8位,那么这个密钥就是8位的。
3,计算c的欧拉公式得到φ©=(a-1)(b-1),即φ©=120.
4,选择一个整数d,使其1<d<φ©,并且d与φ©互质,我们这里可以选11.
5,计算d对于φ©的模反元素e,我们这里可以取模反元素e=11.(模反元素指的是φ© 除e
d的余数为1,或者说(ed-1)可以被φ©整除,计算的公式是dx+φ©*y=1求解即可,得到的x即为e的值,可以用扩展欧几里得算法,下图为扩展欧几里得算法的代码)
c语言实现扩展欧几里得算法

6,将c和d封装成公钥,c和e封装成私钥,在实际应用中,公钥和私钥的数据都采用ASN.1格式表达。
那么这个加密的过程安全嘛
其实很容易破解但又不容易破解,因为只要c可以被因式分解你们私钥就被破解了,但是大整数的因式分解极其困难,除了暴力没有其他有效的方法,所以在c足够大的情况下,用RSA加密的信息实际上是不可能破解的。

猜你喜欢

转载自blog.csdn.net/qq_40261606/article/details/114239526