我的编程空间,编程开发者的网络收藏夹
学习永远不晚

RSA算法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

RSA算法是什么

今天就跟大家聊聊有关RSA算法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

2. 加密算法的一点历史

我们知道常见的加密算法有:对称加密和非对称加密,非对称加密是我们今天的主角。

非对称加密不是一蹴而就的,它是1976年之后才出现的,可以说非对称加密是对称加密的优化。

RSA算法是什么

2.1 对称加密的缺点

所谓对称加密是指:发送方使用一种规则对信息进行处理,接收方需要使用相同的规则对信息进行逆向处理。

RSA算法是什么

对称加密要求通信双方使用相同的规则和密钥进行加解密,这样如何妥善保管密钥和规则就非常重要了。

如果密钥泄露那么再强大的对称加密算法也是徒劳的,所以如何安全地交换对称加密的规则和密钥是短板。

RSA算法是什么

如何安全地交换密钥呢?让人头疼。

2.2 密钥交换算法

1976年两位美国计算机学家 Whitfield Diffie 和 Martin  Hellman,提出了一种崭新构思,可以在不传递密钥的情况下,完成解密,听着很厉害的样子,这难道就是江湖上传说的隔空打牛?

RSA算法是什么

其实这是被称为 Diffie-Hellman 迪菲-赫尔曼密钥交换算法,来看看维基百科上两位大神的简介:

RSA算法是什么

RSA算法是什么

这两位大神是密码学的先驱,为非对称加密算法指出了明路:双方不一定要直接交换密钥。

迪菲-赫尔曼密钥交换算法中通信双方并没有真正交换密钥,而是通过计算生成出一个相同的共享密钥,具体的过程还是比较复杂,在此不展开了。

非对称加密算法RSA借鉴了这种思想,使用公钥和私钥来完成加解密,但是又避免了密钥传输,RSA算法的公钥是公开的,使用公钥加密的信息,必须使用对应的私钥才能解密。

3. RSA算法

RSA算法可以说是地球上最重要的算法之一,是数据通信和网络安全的基石。

3.1 算法作者

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard  Adleman)一起提出的。

当时他们三人都在麻省理工学院工作,RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA算法是什么

RSA算法密钥越长越难破解,根据相关文献,目前被破解的最长RSA密钥是768个二进制位。一般认为,1024位的RSA密钥基本安全,2048位的密钥极其安全,RSA算法目前支持4096位长度。

密钥长度和加解密的时间是成正比的,因此我们需要根据自己的场景来选择密钥长度,不必追求一味长密钥。

3.2 算法过程

RSA算法的本质就是数学,公钥和私钥是数学上关联的,无须直接传递。

算法过程包括:密钥生成、密钥加解密。

RSA算法是什么

3.2.1 密钥生成

RSA算法的密钥是成对的,公钥加密私钥解密,来看下这对密钥是如何被计算出来的。

  • 1.随机选择两个质数P和Q

我们选择P=61,Q=53,计算PQ的乘积N=PQ=61*53=3233,将N转换为二进制:110010100001,N的二进制长度是12,也就是密钥长度为12。

本文只是阐述算法原理,在实际中密钥长度在1024位以上才安全,12位基本上就是个演示。

  • 2.求N的欧拉函数值M

欧拉函数的定义:任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?

欧拉函数有个通用的计算公式:

RSA算法是什么

要证明欧拉函数需要分为很多种情况,特别地,当n是质数时会出现一些特殊的情况。

直接来个结论:

a. 如果k是质数,则φ(k) = k-1;

b.如果 n = P * Q,P 与 Q 均为质数,则 φ(n) = φ(P * Q)= φ(P)φ(Q) = (P - 1)(Q - 1) 。

P=61、Q=53 则N=3233,那么N的欧拉函数记为M=(P-1)*(N-1) = 60*52=3120

  • 3.找一个与M互素的整数E

M和E之间除了1以外没有公约数(互质)且E

  • 4.找一个整数D,满足如下关系:

(E*D) mod M =  1,换句话说E和D的乘积除以M的余数为1,这里有一个术语-模逆元,也就是指有一个整数d,可以使得ed被φ(n)除的余数为1。

等价于 如下计算过程:

当E=17,M=3120,K=1,2,3...时,

17*D - K*M = 1,求解这个方程找到一组满足关系的D和K即可,可证其中一组为(D,K)=(2753,15)。

综上所述,我们找到了通过随机选择的互质的P和Q计算得到N、M、E、D,我们把这些数字分为两组:(E,N)和(D,N)分别为公钥组和私钥组,E是公钥、D是私钥。

在本例中公钥组为(E,N)=(17,3233),私钥组(D,N)=(2753,3233),接下来我们将使用这对密钥进行加解密。

RSA算法是什么

3.2.1 加密过程

由于RSA算法本质是数字的运算,因此我们在对字符串进行加密时需要先将字符串数值化,可以借助ascii码、unicode编码、utf-8编码等将字符串转换为数字。

需要特别注意转换后的数字X需要小于密钥组中的N,如果字符串转换后的数字大于N则需要进行拆分,这可能也是在数据量大时我们使用对称加密算法来加密内容,用非对称加密算法来加密密钥的原因吧。

加密过程满足:

X^E mod N = Y

其中X为明文,E为公钥,N为大整数,Y为密文,mod取余运算。

3.2.3 解密过程

我们获得密文Y后,开始解密,过程满足:

Y^D mod N = X

其中Y为密文,D为私钥,N为大整数,X为明文,mod取余运算。

上述的加密和解密过程涉及到了费尔马小定理。

3.2.4 欧拉定理和费尔马小定理

这块有点晦涩,但是确实RSA算法的核心部分,简单看下吧:

RSA算法是什么

RSA算法是什么

费尔马小定理给出了素数检测性质,欧拉对其进行了证明,也就是费马-欧拉定理。

3.3 RSA算法可靠性分析

经过上面的密钥生成、加解密过程,我们难免要问:RSA算法可靠吗?通过公钥组(E,N)能否推导出私钥D呢?

来梳理一下:

  • 由于ed≡1 (mod φ(N)),只有知道e和φ(N),才能算出d,e是公钥匙,所以需要知道φ(N)就可以。

  • 根据欧拉函数 φ(N)=(P-1)(Q-1),只有知道P和Q,才能算出φ(N)。

  • N=pq,只有将N进行因数分解,才能算出P和Q。

所以,如果大数N可以被因数分解,私钥D就可以算出,从而破解密文。

3.5  大整数因数分解

大整数的因数分解是极其困难的,属于NPC问题,除了暴力破解没有很好的解决方案,目前人类分解的最大长度的二进制数为768位,1024位的长度目前尚未破解,因此1024长度的二进制密钥是安全的。

所以RSA算法的安全性取决于大整数分解的难度,目前RSA算法可以支持4096位密钥长度,分解难度超乎想象,即使借助于量子计算机难度和时间都是非常非常大的。

RSA算法是什么

看完上述内容,你们对RSA算法是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

RSA算法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

什么是RSA

RSA是一种非对称加密算法,它的名称是由发明者的姓氏首字母组成的。RSA算法是一种公钥加密算法,由三位发明者(Ron Rivest, Adi Shamir和Leonard Adleman)于1977年提出。RSA算法的主要特点是使用了两个密
2023-09-28

Java RSA算法怎么实现

Java中可以使用Java内置的加密库javax.crypto来实现RSA算法。下面是一个简单的RSA加密和解密的示例代码:import javax.crypto.Cipher;import java.security.KeyFact
2023-10-26

python3中的rsa加密算法怎么用

今天小编给大家分享一下python3中的rsa加密算法怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:rsa加密,
2023-06-30

Java如何实现RSA算法

小编给大家分享一下Java如何实现RSA算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!以下是引用片段:package rsa; import java.mat
2023-06-03

python----RSA非对称加密算法

最近在搞项目的接口持续性自动化测试,好久没有更新博客了。项目中接触到很多加密相关的数据,很多项目都会用到非对称加密算法来保证前端和服务器交互的数据安全。下面介绍下python下怎么使用RSA加密算法:import rsa (publicke
2023-01-31

什么是算法?

算法是计算机解决问题的步骤序列,具有有限性、输入/输出、确定性、有效性的特征。常见类型包括搜索、排序、优化算法等。算法复杂度衡量其时间或内存需求,常见类包括O(1)、O(logn)和O(n^2)。算法在计算机科学中至关重要,用于优化性能、解决复杂问题并促进理论与实践联系。广泛应用于人工智能、商业、科学、游戏开发等领域。
什么是算法?
2024-04-02

使用python实现rsa算法代码

RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名。 维基百科给出的RSA算法简介如下: 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥:
2022-06-04

python实现RSA加密(解密)算法

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其密钥的长度
2022-06-04

什么是java算法

什么是java算法 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,java算法就是采用Java语言来实现解决某一问题的清晰指令。算法的特征:输入性:有零个或多个外部量作为算法的输入输出性:算法产生至少一个量作为输出确定性:算法中每条指令清晰,
什么是java算法
2016-09-25

rsa对称加密算法有哪些优点

RSA非对称加密算法有以下优点:1. 安全性高:RSA算法基于一个数论难题,即大整数分解,目前尚未发现有效的算法来解决这个难题。因此,RSA算法被认为是一种安全性较高的加密算法。2. 不需要共享密钥:传统的对称加密算法需要发送方和接收方事先
2023-10-20

编程热搜

目录