RSA介绍
2024-09-25 15:50:37
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。
RSA加密、解密 1977年
RSA算法机制
Step1、公钥生成
N=P*Q Phi(n)=(P-1)*(Q-1)
(为了生成公钥我们选择两个素数p与q)
eg、P=53,Q=59
N=P*Q=53*59=3127;
在公钥中我们还需要一个指数e(e必须是整数、n不能被e整除、e必须介于1与phi(n)之间)
设e=3;
公钥由N与e组成
Step2、秘钥生成
Phi(n)=(P-1)(Q-1)
Phi(n)=(P-1)(Q-1)=52*58=3016;
计算秘钥
d=(2*phi(n)+1)/e
d=(2*3016+1)/3=2011
Step3、公钥加密数据
加密数据需要用功能公钥
公钥由N与e组成(3127和3)
用秘钥解密信息
eg、我们来加密一个很简单的词HI
H 8 I 9 (ABCDEFGHI)
89 HI
c为密文
c=89e mod N
即:893 mod 3127= 1394
Step3、私密解密数据
公钥不能用来解密 只有原先执行私钥生成的人才拥有秘钥
c密文 d秘钥 N公钥
解密内容为 cd mod N
即:13942011 mod 3127=89
最新文章
- malloc 与 free函数详解<;转载>;
- IOS网络第一天-01基本的HTTP请求
- [GraphQL] Use Arguments in a GraphQL Query
- Unity 网络斗地主 判断牌的类型
- CMake使用之一
- c#中 uint--byte[]--char[]--string相互转换汇总
- Spring对jdbc支持
- P、NP、NP完全问题
- Robot Framework和Selenium简介
- C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解
- 微信小程序开发教程 #043 - 在小程序开发中使用 npm
- ios高级开发之多线程(一)
- 十、docker扩展
- 26.python常用端口号
- Git clone、git reset
- thinkphp本地调用Redis队列任务
- process credentials(三)
- 【转】【Python】Python3爬虫实现自动登录、签到
- oracle常用数据类型说明
- Django QueryDict