RSA加密算法的基本流程

RSA加密算法的基本流程本文只是说一下RSA加密的流程,对于其他的不做过多的介绍!首先找到两个大素数p,q计算n=p*q,=φ(n)(p-1)*(q-1),其中φ(n)表示的是n的欧拉函数值任意选择一个满足要求的证书e,满足1

大家好,又见面了,我是你们的朋友全栈君。

本文只是说一下RSA加密的流程,对于其他的不做过多的介绍!

  1. 首先找到两个大素数 p,q
  2. 计算n = p*q , = φ(n)(p-1)*(q-1),其中φ(n)表示的是n的欧拉函数值
  3. 任意选择一个满足要求的证书e,满足1 < e <φ(n),并且gcd(φ(n),e)==1
  4. 计算d,满足(d*e)%φ(n) ==1,即d是e在模φ(n)下的乘法逆元,因为e和φ(n)互质,所以他的乘法逆元一定存在
  5. 以{e,n}为共钥,{d,n}是私钥

下面我问来举个例子:
假设我们已经知道明文是19;
我们选定两个素数p=7,q=19;
so n=p*q = 119 ,φ(n) = (p-1)*(q-1) = 96;
我们选择满足条件的e = 5,我们就能很简单的知道d = 77
所以共钥为{5,119},密钥{77,119}
所以我们可以得到密文是 C = (19^e)%n = (19^5)%119 = 66
解密为(C^d)%n = 19;

RSA的安全性

根据上面的推导,我们知道在RSA中又六个变量,p,q,n,φ(n),e,d

其中e和n是公开的,其中最关键的就是d,因为如果d泄露的话,就相当于私钥泄露了!
那么怎么破解RSA呢?
(1)e*d≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
所以:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142050.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java实现 蓝桥杯 算法提高 三进制数位和

    Java实现 蓝桥杯 算法提高 三进制数位和算法提高三进制数位和时间限制:1.0s内存限制:256.0MB提交此题问题描述  给定L和R,你需要对于每一个6位三进制数(允许前导零),计算其每一个数位上的数字和,设其在十进制下为S。一个三进制数被判断为合法,当且仅当S为质数,或者S属于区间[L,R]。你的任务是给出合法三进制数的个数。输入格式  一行两个非负整数L,R。输出格式  一行一个非负整数表示答案。样例输…

    2022年6月16日
    26
  • Thinkpad x200 X201拆机换风扇教程 实图

    Thinkpad x200 X201拆机换风扇教程 实图X200机器取下电池后,背面图:上图:背部合计16颗螺丝,规格长度下面8有标注。1.黄色圈—–屏轴螺丝2.蓝色圈—-硬盘螺丝3.黑色圈—-键盘螺丝4.灰色圈—-SIM卡插槽(X200内部有扩充模块插槽这个插槽也可插询盘,X200均预留了WWAN天线在屏里面)5.绿色圈—-掌托/U形框螺丝6.红色方圈—-排水槽(是防水泼而不是防水,想起有个客户向别人炫耀往键盘上…

    2022年6月27日
    109
  • 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?

    【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?

    2021年11月20日
    45
  • ods数据如何导入dw层_OD数据聚类

    ods数据如何导入dw层_OD数据聚类ODS层数据导入脚本

    2022年10月5日
    0
  • pycharm安装matplotlib_深度学习小白篇一:Anaconda的安装和配置

    pycharm安装matplotlib_深度学习小白篇一:Anaconda的安装和配置一、前言大家知道,深度学习需要使用Python来做开发,所以,想要进入深度学习的战场,我们就必须要先要有python的开发环境作为武器,否则只能干看,而无从下手。子曰:“工欲善其事,必先利其器。”,我们最直接的武器就是编译Python程序的开发环境,一般情况下,我们选择在Python官网下载对应版本的Python然后用记事本编写,再在终端进行编译运行即可。但是对于我这样懒的小白,我喜欢装一些方便的…

    2022年8月28日
    0
  • 什么是Volatile关键字?

    什么是Volatile关键字?一、Java的内存模型(JMM)在仔细讲解Java的volatile关键字之前有必要先了解一下【Java的内存模型】Java的内存模型简称JMM(JavaMemoryModel),是Java虚拟机所定义的一种抽象规范用来屏蔽【不同硬件】和【操作系统】的【内存访问差异】。让Java程序在各种平台下都能达到一致的内存访问效果。…

    2022年7月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号