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

最新文章

  1. malloc 与 free函数详解<转载>
  2. IOS网络第一天-01基本的HTTP请求
  3. [GraphQL] Use Arguments in a GraphQL Query
  4. Unity 网络斗地主 判断牌的类型
  5. CMake使用之一
  6. c#中 uint--byte[]--char[]--string相互转换汇总
  7. Spring对jdbc支持
  8. P、NP、NP完全问题
  9. Robot Framework和Selenium简介
  10. C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解
  11. 微信小程序开发教程 #043 - 在小程序开发中使用 npm
  12. ios高级开发之多线程(一)
  13. 十、docker扩展
  14. 26.python常用端口号
  15. Git clone、git reset
  16. thinkphp本地调用Redis队列任务
  17. process credentials(三)
  18. 【转】【Python】Python3爬虫实现自动登录、签到
  19. oracle常用数据类型说明
  20. Django QueryDict

热门文章

  1. unique_ptr的实现原理
  2. bolb与base64的图片互转
  3. 使用system V实现读者写者问题
  4. Paper | Learning convolutional networks for content-weighted image compression
  5. 使用Python写yaml用例
  6. backbone 路由传参(可选)
  7. iOS Workflow 分享 - Scan QR Code
  8. (二十四)golang--错误处理
  9. python-4-格式化输出
  10. CSS改变浏览器默认滚动条样式