RSA加密算法简介[通俗易懂]

RSA加密算法简介[通俗易懂]背景RSA加密算法是公钥密码最著名的算法之一,是由MIT三位(RonRivest,AdiShamir,LenAdleman)提出的,也就以三位的名字首字母命名。该算法的理论基础是“大数分解和素数检测“,如果说有一天,大数分解和素数检测的数学理论被证明可以简单解决,那么RSA算法的加密将没有任何意义。有提出说量子计算机的出现可以大大提高RSA的破解效率。下面我们将简单学习RSA加密算法的

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

背景

RSA加密算法是公钥密码最著名的算法之一,是由MIT三位(Ron Rivest, Adi Shamir, Len Adleman)提出的,也就以三位的名字首字母命名。
该算法的理论基础是“大数分解和素数检测“,如果说有一天,大数分解和素数检测的数学理论被证明可以简单解决,那么RSA算法的加密将没有任何意义。有提出说量子计算机的出现可以大大提高RSA的破解效率。下面我们将简单学习RSA加密算法的基本知识。

算法描述

RSA算法使用平方运算,明文以分组为单位进行加密,每个分组的二进制值小于n,即分组的大小必须小于等于log2(n)+1位(通常n的大小为1024位二进制数或309为十进制数,即n<2^1024)。对明文分组M和密文分组C,加密解密过程如下:

加密:这里写图片描述
解密:这里写图片描述

收发双方均已知n,发送方已知e,只有接收方已知d,因此RSA加密算法的公钥PU为{n,e},私钥PR为{n,d}。
d,e,n应满足如下条件:

  1. 可以找到e,d,n,使得对所有M< n,有这里写图片描述
  2. 对所有M< n,计算M^e和C^e是比较容易的;
  3. 由e,n预测d是不可行的。

算法理解

该算法使用上非常简单,将明文分组M进行加密操作得到密文分组C,接收方再对密文分组C进行解密操作得到明文分组M,加密过程也很好理解,就是对明文分组C取指数e后模n。解密过程为对密文分组M取指数d后模n。但是为什么可以这么做呢?如何得到合适的e,d,n呢?

这里面有一个非常重要的等式:

这里写图片描述

当e和d互为模这里写图片描述的乘法逆时,上述关系式成立

其中这里写图片描述为欧拉函数。也就是说当n=ed时,算法成立。
在《公钥密码 之 素数,费马定理与欧拉定理》中我们提到,对于素数p和q,有这里写图片描述

e和d应满足如下关系:
这里写图片描述

即e和d互为模这里写图片描述的乘法逆。
根据模算数的性质,仅当d(和e)与这里写图片描述互素时,d和e是模这里写图片描述的乘法逆元。因为d和这里写图片描述互素,则一定存在一个整数是d的模反元素。同理对于e也是如此。因此可知d和e互为模反元素,则得到上式等价于
这里写图片描述
这里写图片描述

这里面涉及到了模反元素,模反函数的定义为:

如果两个正整数a和n互素,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
这里写图片描述
其中b叫做a的模反元素。

RSA加密算法密钥生成过程:
这里写图片描述

这里面模反元素d比较难计算,可以利用扩展的欧几里得算法计算。大多数情况下我们的素数pq会选的很大,这样得到的n也会很大,可以增加加密算法的安全性。但是为什么呢?

RSA加密算法的安全性

RSA加密算法中一共涉及到p,q,n,这里写图片描述,e,d六个数字,其中{n,e}为公钥,也就是说n,e是暴露的,那么能否通过n,e来得到密钥{n,d}呢?其中关键就是得到d。
我们来看如何得到d:
1。这里写图片描述
其中e是已知的,那么关键就是如何得到这里写图片描述
2。这里写图片描述
p,q成为得到这里写图片描述的关键,而pq可以从n中得到,并且n是已知的。
3。n=pq,那么对n进行因式分解即可。

到这一步你就知道为什么要使得n很大了吧!也就解释了在一开始提到的该算法的理论基础是“大数分解和素数检测“。如果大数分解被证明是可以很快计算的,那么RSA加密后的密文就相当于裸奔了。

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

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

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


相关推荐

  • 使用Nginx实现负载均衡[通俗易懂]

    使用Nginx实现负载均衡[通俗易懂]负载均衡的作用负载均衡:分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。负载均衡这里面涉及的东西相对也是比较多的,理论就不说太多了,网上,书上很多,今天我们就利用Nginx服务器来实现一个简单的负载均衡负载均衡算法源地址哈希法:根据获取客户端的IP地址,通过哈…

    2022年4月20日
    42
  • 手机gif录屏软件_手机录制gif软件

    手机gif录屏软件_手机录制gif软件gif录屏手机app是一款免费专业的视频剪辑制作软件,下载gif录屏apk支持GIF动画录屏以及MP4视频录屏,通过手机录屏GIF制作软件,一键轻松进行视频编辑、视频压缩和视频拼接。软件介绍gif录屏app是一款完全免费的专业高清流畅的录屏软件,支持GIF动画录屏以及MP4视频录屏。功能强大,操作简单,用户可以轻松录屏,录屏生成GIF回味用户自动生成GIF文件;将屏幕录制到动画文件.GIF,一边录…

    2026年2月2日
    3
  • apt查找软件包_apt download

    apt查找软件包_apt downloadaptitudeshowvsftpd查询vsftpd软件包的所有信息aptitudesearchpkg-pattern模糊检索所需要的软件包aptitudesearch~T查询所有的软件包aptitudesearch~U列出软件仓库中可供更新的软件包aptitudesearch~i列出系统中已经安装的软件包…

    2025年7月16日
    5
  • 独立成分分析ICA系列1:意义

    独立成分分析ICA系列1:意义1.前言独立成分分析思想和方法最早源于上世纪八十年代几个法国学者的研究工作,尽管当时他们并没有命名其为ICP;在1986年举行的神经网络计算会议上,法国学者Heraull和Jutten提出了一个基于神经网络模型和Hebb学习准则的方法,来解决盲源分离问题,简称BSS.混合信号是由相互统计独立的源信号混合而成的。这篇文章提出的算法可以解决具有两个源信号混合的盲源分离问题。他们的工作开

    2022年5月16日
    40
  • 开源 MQTT 服务器

    开源 MQTT 服务器到目前为止,比较流行的开源MQTT服务器有几个:1.EclipseMosquitto使用C语言实现的MQTT服务器。Eclipse组织还还包含了大量的MQTT客户端项目:https://www.eclipse.org/paho/#2.EMQX使用Erlang语言开发的MQTT服务器,内置强大的规则引擎,支持许多其他IoT协议比如MQTT-SN、CoAP、LwM2M等。3.Mosca使用Node.JS开发的MQTT服务器,简单易用

    2022年5月8日
    50
  • 永磁直流无刷电机驱动器_永磁直流无刷电机的优缺点

    永磁直流无刷电机驱动器_永磁直流无刷电机的优缺点现实生活中我们接触的电机包括很多种类,除部分特殊种类外,永磁电机均是利用定子与转子磁场相互作用的原理制成。其中,使用直流电源驱动的电机称为直流电机,直流电机又可细分为直流有刷电机和直流无刷电机(BLDC)。电刷,是区分“有刷”与“无刷”电机的关键,它是与换向器组合使用的电机组件,常见材质为金属和碳。带有换向器和电刷的电机称为有刷电机,使用电子电路实现换向功能的电机称为无刷电机。直流有刷电…

    2022年10月21日
    2

发表回复

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

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