图解|什么是RSA算法

1. 数学之美和密码学

前阵子闲来无事看了会儿《数学之美》,其中第17章讲述了由电视剧《暗算》展开的密码学背后的一些数学原理。

书中从凯撒密码到二战盟军和日军,讲到密码学中均匀分布&统计独立的基础理论,看得我津津有味,但是其中一些细节没有整明白,于是决定搞篇文章。

2. 加密算法的一点历史

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

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

2.1 对称加密的缺点

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

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

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

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

2.2 密钥交换算法

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

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

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

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

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

3. RSA算法

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

3.1 算法作者

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

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

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

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

3.2 算法过程

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构成互质关系?

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

要证明欧拉函数需要分为很多种情况,特别地,当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<M,我们随机选择E为17。

  • 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),接下来我们将使用这对密钥进行加解密。

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算法的核心部分,简单看下吧:

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

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位密钥长度,分解难度超乎想象,即使借助于量子计算机难度和时间都是非常非常大的。

4. 总结

本文从对称加密算法传递密钥安全性为起点,说到迪菲-赫尔曼算法进行密钥交换协商,该算法为RSA算法的公钥和私钥提供了灵感。

麻省理工的三位数学家在欧拉定理&费尔马定理等等一些数学定理的基础上创造了伟大的RSA非对称加密算法。

RSA算法的安全性取决于大数质因数分解的难度,目前而言1024位二进制长度的密钥人类都没有破解,为了安全性考虑可使用2048位长度的RSA密钥进行加密。

确实是烧脑的硬核内容啊,不由得感叹素数真是个神奇的东西,段位有限只能抛砖引玉,到此为止啦!

吴师兄学算法
关注 关注
  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
数字签名 RSA算法 c++
05-31
包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译 包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译
RSA算法的C实现
08-14
MFC界面 相当于一个用RSA算法实现的加密小软件
RSA算法详解:原理、应用
qq_27718973的博客
03-16 2743
RSA算法作为一种经典的公钥加密算法,在网络安全领域发挥着重要作用。通过深入理解其原理、应用和安全性,我们可以更好地利用RSA算法保护数据安全,维护网络安全秩序。
RSA算法演示RSA算法演示
02-02
RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示
允许使用RSA4096位私钥对Eloquent属性进行加密和解密。.zip
03-23
允许使用RSA4096位私钥对Eloquent属性进行加密和解密。
RSA算法演示.rar
04-05
RSA算法演示.rar
RSA算法详解及C语言实现
热门推荐
qq_38365116的博客
05-28 9万+
1、什么是RSA RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数...
带你彻底理解RSA算法原理
往事撩人醉的博客
01-09 1162
1. 什么是RSARSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。2. RSA加密RSA的加密过程可以使用一个通式来表达密文=明文 E modN
RSA加密算法详解及例题
lesczx的博客
06-09 6万+
这是我自己在学习RSA加密算法的时候自己整理的笔记,如需转载请注明出处 RSA加密算法 我这里就不对RSA的发明背景做介绍了,你只要知道RSA加密算法是非常非常重要的加密算法,放在现在的时代亦是如此。 RSA加密算法的安全性是基于对极大整数做因数分解的困难。 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其一个加密,则需要用另一个才能解密。例如: (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密
RSA算法习题 (采用RSA算法,其e=7,p=11,q=13,求出公钥和私钥,并求出明文85进行加密后的密文。)
yayayalaila的博客
05-01 2万+
1、采用RSA算法,其e=7,p=11,q=13,求出公钥和私钥,并求出明文85进行加密后的密文。 2. 找出质数 P、Q P=11 Q=13 3. 计算公共模数 N = P * Q = 143 4. 欧拉函数 Φ(N) = (P-1)*(Q-1) = 10 *12 = 120 5. 计算公钥E 1<E<φ(N) 所以1<E<120 E的取值范围{3,7,9,11,13,17,19,...,117,119} E的取值必须和φ(N..
什么事RSA算法?原理是什么?
公众号:BennuCTech
12-17 1万+
前言 RSA算法是最重要的算法之一,它是一种非对称加密,是目前最有影响力的加密方式之一。这篇文章我们通过实现一种简单的RSA加密来探究它的原理。 计算公钥和私钥 RSA的公钥和私钥需要结合在一起工作。公钥用来对数据块加密,之后 ,只有对应的私钥才能用来解密。生成密钥时,需要遵循几个步骤以确保公钥和私钥的这种关系能够正常工作。这些步骤也确保没有实际方法能够从一个密钥推出另一个。 开始前,首先要选择两个大的素数,记为p和q。根据当今求解大数因子的技术水平,这两个数应该至少有200位,这们在实践才可以认为是安
Rsa算法详解.docx
最新发布
05-13
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA...
数学之美————每章小结
qq_37431224的博客
06-18 4310
数学之美 书评:本书讲的是道而不是术,真正的术还要自己细致的研究下去。 第1章:文字和语言VS数字和信息 1.文字和数字 讲了一堆古代文字,其实就是为了引出下面两个概念用于翻译 1.信息的冗余是安全保障 2.古代语料的多样性(一个句子或者词多种写法)对翻译很有用 2.文字和语言背后的数学 1.古代人讲话宽信道,而传竹筒是窄信道,所以我们古时候就有压缩这个思想啦 2.圣经有90-100W字,犹太人很认真,但是还是会错误,所以出现校验码的思想(每个字都是一个数字,每行内相加都是一个固...
数学之美》第17章 由电视剧《暗算》所想到的—谈谈密码学的数学原理
wangsiji_buaa的博客
05-11 1227
1 密码学的自发时代2 信息论时代的密码学
数学之美介绍的 公开密钥算法
jccg3030的专栏
03-07 444
公开密钥 python
数论的奥秘:RSA 加密算法背后的数学之美(上篇)
Lorin 洛林的后端技术小站
11-25 907
hello,大家好,我是 Lorin,接下来的两期是给群友答疑的两期,关于 RSA 非对称加密原理,文章分为上下两篇,上篇:“数论的奥秘:RSA算法背后的数学之美” 主要讲解 RSA 背后的故事和相关的数论知识,下篇:“RSA 算法的原理与加密过程深度解析” 主要讲解如何讲解如何使用数论知识实现 RSA 算法
【读书笔记】《数学之美》——一个好方法在形式上总是简单的
summer
09-29 700
牛顿曾说“(人们)发觉真理在形式上从来是简单的,而不是复杂和含混的。”数学的美妙之处在于它对自然界史诗的总结和归纳,也是抽象思考的结果。
RSA算法原理(二)
07-22 996
RSA算法原理(二) 转载:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html 上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的...
RSA非对称加密使用方式与原理浅析
dream_caoyun的博客
11-26 2067
一、非对称加密的简述: 非对称加密,顾名思义加解密用的不是同一个密钥(如此我们也能很通俗的对照理解对称加密,显然它后者是加解密为同一个密钥),那么非对称加密就得用俩个密钥,一个叫公钥,任何人都能够去获取,一个叫私钥,不会四处乱传输,保留在一个认定安全的区域,公钥和私钥任意一方加密,只能由另一方解密,自己也是无法解密的,目前全球的数据安全测试密钥大于1024的密钥还没有人宣称能够破解,因此是安全级别很高的加密算法,关于非对称加密的历史由来可以百度,有很详细的介绍,是美国很厉害的计算机大师和数学家设计出来的。
RSA算法是什么算法
09-30
RSA算法是一种非对称加密算法,它是由Ron Rivest、Adi Shamir和Leonard Adleman三位计算机科学家在1977年提出的。RSA算法基于两个大素数的乘积难以分解这一数论问题,其安全性依赖于大数分解的困难性。 RSA算法...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 还敢搞黄色?4 个色情网站被一锅端,9 名福利姬被刑拘! 280697
  • 什么是 P = NP 问题? 168399
  • B 站疯传,堪称最强,10 大免费的白嫖网站 94093
  • 为什么有人劝别选计算机专业? 69826
  • 动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版) 61732

分类专栏

  • 计算机基础 14篇
  • Java 4篇
  • C++ 1篇
  • 算法 31篇
  • 数据结构 21篇
  • github 4篇

最新评论

  • LeetCode 一题多解 | 53. 最大子数组和:五种解法完全手册

    不羡锨: 清晰无比👍

  • 图解 LeetCode 第 421 题:数组中两个数的最大异或值

    kkdark: 写得很好,今天的每日一题,比官方题解好懂

  • 算法科普:什么是约瑟夫环

    Yu_Zhu_JingHao: 十分感谢,看了许多,就看懂了您写的程序表情包

  • 图解操作系统知识总结之内存管理

    哈哈哈~哈哈哈: 写的非常棒图解也非常的清晰

  • 作为计算机专业学生,最应该学习的课程前五位是什么?

    qq_66336791: 计算机大三了,真的好难表情包

大家在看

  • 微信支付新服务器证书兼容性验证 251
  • 《反恐精英:Source》启动遇阻:tier0.dll文件缺失的解决方案汇总
  • 人脸识别和 ArcFace:用于深度人脸识别的附加角边际损失
  • 探索AI图像生成:深入理解DALL-E 2
  • 个人网页制作 个人网页设计作业 HTML CSS个人网页模板 大学生个人介绍网站毕业设计 DW个人主题网页模板下载 个人网页成品代码 个人网页作品下载 165

最新文章

  • 刷到 LeetCode 这个评论,被笑到了
  • 剑指 Offer 09. 用两个栈实现队列(视频讲解)
  • 看完谷歌大佬的 LeetCode 刷题笔记,我马上去字节跳动面试!
2022年1篇
2021年93篇
2020年812篇
2019年456篇
2018年16篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网餐饮行业网络推广周潜川易筋经怎么样中国周易预测网周易公司测字车库惊魂太原seo优化公司官网seo优化建设视频网站永城信息港征婚精武鸭脖加盟别人qq个性签名在哪里打开八零九零电视剧上海外贸网站seo材料建筑公司起名姓廖怎么起名字装饰设计公司起名字蒋庆泉潍坊网站建设外贸怎么算生命密码外贸产品网站制作起的游戏名字大全珍惜时间的成语滨州网站建设公司周公解梦佛滔网姓屈的女孩起名夏邑县事业单位工资生辰八字起名字大全免费测试题周公解梦梦见抽烟中外商贸网站优化专业企业网站的建设淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化