理论基础:RSA公钥密码体制的理论基础是数论中的大整数因子分解的困难性,即求两个大素数的乘积,在计算机上很容易实现。但是,要将一个大整数分解为两个大素数之积,在计算上很难实现。
一. RSA算法
![70a7ab47bfc8d6e7357dcca650f6e737.png](https://i-blog.csdnimg.cn/blog_migrate/8dece834e4fefb02f9ffd660a30b1f62.jpeg)
![21cbbc83cd41f2959716cb296ad616cc.png](https://i-blog.csdnimg.cn/blog_migrate/6df065a132e1da4f7015e6c4dd8f5877.jpeg)
二. 重要步骤说明
1.获取素数
![290f8bfb70d69b3341a0b393e6d567c1.png](https://i-blog.csdnimg.cn/blog_migrate/f6d22e6a3e50256afe42519c87ec72ea.jpeg)
2.拓展欧几里得算法求逆
![3ba86a3ab9c7d9da2b627f687b964689.png](https://i-blog.csdnimg.cn/blog_migrate/008926b0a76a30968f08cd0a6991d05c.jpeg)
//欧几里得算法实现
int gcd(int a, int b)
{
if(b == 0)
return a;
else
return gcd(b, a % b);
}
![ef54c0a4d870433131cce1787b708840.png](https://i-blog.csdnimg.cn/blog_migrate/91341236759e39270fed627264ca341a.jpeg)
//拓展欧几里得算法实现
int e_gcd(int a, int b, int &x, int &y)
{
if(b == 0)
{
x = 1;
y = 0;
return a;
}
int ans = e_gcd(b, a%b, x, y);
int temp = x;
x = y;
y = temp - a/b*y;
return ans;
}
3.中国剩余定理(CRT)与解密
![5cd4654b5f3324c958ae535aa0a97d78.png](https://i-blog.csdnimg.cn/blog_migrate/503a3fc07fe4c8ec8e0be296d7a5e42b.jpeg)
![ddf094f4617b417355d47281fbb4230c.png](https://i-blog.csdnimg.cn/blog_migrate/1567735556efcbf9a586ff50aa729974.jpeg)
![ac5b666acaa3c76d53cec7bb9e28aa2d.png](https://i-blog.csdnimg.cn/blog_migrate/71cf1a0c1a258e46d114e0267510bd1c.jpeg)
![c60036b51c5cde33971df26ae046163e.png](https://i-blog.csdnimg.cn/blog_migrate/f863b1540513c90204d977171dfdf604.jpeg)
![12506b538d86eda5a87ddf05109f3cd0.png](https://i-blog.csdnimg.cn/blog_migrate/7b800383ef587fa2f99947690932e796.jpeg)
![87ae320efd461935d9e724bbc07f6768.png](https://i-blog.csdnimg.cn/blog_migrate/c919b08b24b0d0ead568f17eb0b49850.jpeg)
![3514c05688e50052aac96b9cbcfc69c1.png](https://i-blog.csdnimg.cn/blog_migrate/d9e1bb8ea1aa5217350a84628a4d8fcf.jpeg)
一直没在这里更新东西了,主要是因为这个软件编辑技术性文章不怎么方便,均更新在csdn上了,现在更新的内容有:数据库,计算机组成原理,计算机基础,密码学。都是我一边学一边更新,还是热乎的呢 。今天注册了一个公众号,决定后期将文章转移至公众号"小小的书桌",欢迎关注,一起学习与进步,谢谢!