https://zhuanlan.zhihu.com/p/21947331

1、RSA加密算法概述

RSA加密算法是非对称加密算法中的一种,在1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,并取三人名字的首字母命名该算法。

RSA加密算法因其可靠的安全性(目前看来是十分安全的),得到了广泛的认可和使用,ISO(国际标准化组织)、ITU(国际电信联盟)及SWIFT(环球同业银行金融电讯协会)等国际标准组织均采用RSA作为加密标准,PGP等协议也采用RSA算法来传输会话密钥和数字签名;在本篇文章中,将详细讲解RSA算法中的数学原理和加密本质;

2、RSA加密算法的数学原理

(1)素数:一个大于1的数字,如果只能被1和这个数字本身整除,那么我们就称这个数字为素数,

例如7只能被1和7整除,所以7是素数,8能被1、2、4和8整除,所以8不是素数;

(2)互素:如果两个数m,n的最大公约数是1,那么称m与n互素,记作:(m,n)=1;

(3)φ(n):对于任意一个数n,φ(n)表示哪些与n互素并且小于n的数字的总数;

例如,φ(8)=4,因为只有1、3、5、7与8互素;φ(5)=4,(1,2,3,4都是);

(4)在(1)(2)(3)的基础上引出一个重要的定理,如果n是一个素数,那么φ(n)=n-1;

(5)φ(n)具有传递性:p,q是素数,那么φ(p)=p-1; φ(q)=q-1;n=p*q;此时φ(n)=φ(p)*φ(q)=(p-1)(q-1);

(6)广义欧几里得除法:,如果(m,n)=1即(m,n互素),那么一定存在整数s,t使得t*m+n*s=1(“+”号也可以写成“-”号);可以理解为t*m比n的s倍还要多1,也可以表示为t*m=1 mod n;其中mod表示求余数;

(6)欧拉定理:p是一个素数,(a,p)=1,即a和p互素,那么a^φ(p)=1 mod p;这是一个著名的定理,证明过程很复杂,我们直接忽略;

(7)RSA的定理模型:

设p,q是两个素数,n=p*q;

假设整数e满足1<e<φ(n),(e, φ(n))=1;

1、 那么e,φ(n)就满足了定理(5),所以就存在整数s、d,e*d+s* φ(n)=1;

2、 假设存在一个整数a,(a,n)=1;那么a和q,p也应该互素,即(a,p)=1;(a,q)=1;

既然(a,p)=1;那就满足了定理(6);所以a^φ(p)=1 mod p;

等式两边同时做φ(q)次幂运算,得到(a^φ(p))^φ(q)=1^φ(q) mod p,

整理得a^(φ(p)*φ(q))=1 mod p;

套用定理(5),φ(n)=φ(p)*φ(q),所以a^φ(n)=1 mod p;

等式两边同时做s次幂运算,得到a^(s*φ(n))=(1^s) mod p=1 mod p;

左右在个乘以a,得到a^(1+(s*φ(n)))=a mod p;

这是我们发现1+(s*φ(n))不就是e*d吗?(套用1、结论);所以:

a^(e*d)=a mod p;①这是一个重要的结论,同理,q,p在本质上是相同的,所以

a^(e*d)=a mod q;②

算式①和算式②可以利用中国剩余定理得出结论a^(e*d)=a mod (p*q);中国剩余定理是比较复杂的,不过我们可以狭义的理解为这样的数学题,一个整数,被5除余1,被7除余1,那么这个整数最小是多少呢?答案是36,因为这个整数一定被5*7=35除余1,所以它是36,71,106……所以最小是36;

那么a^(e*d)=a mod (p*q)就很好理解了,因为n=p*q;所以a^(e*d)=a mod n;

这个算式是非常有价值的,因为a在算了e次幂后,再算d次幂竟然又算回来了,依然等于a;这个过程非常符合我们的加密和解密过程;而且e,d是不相同的,所以加密和解密过程将满足非对称的关系;所以我们可以这样设计RSA加密算法:

(8)RSA加密算法数学表达:

1、 RSA的破解原理

几乎所有关于RSA算法安全性的介绍都会提到,RSA算法的安全性基于大素数相乘不可分解的数学原理;那么它究竟是什么意思呢?

我们还是要看这个算式e*d+s* φ(n)=1;这是上文中结论1的算式;它也可以表示成上图的模式:e*d=1 mod φ(n);

其中n和e是公钥,是公开的给大家的,要想破解RSA算法,我就必须通过这个算式算出d来,但是φ(n)是多少我们也不知道;

在数学中,有这样一个事实,如果X*Y=Z,*表示数学运算,如果我们只知道X是多少,不知道Z,那么你是永远也算不出Y的;所以我们需要从已知的n出发,算出φ(n),进而算出d;

因为φ(n)=φ(p)φ(q)=(p-1)(q-1),所以我们只需要算出p和q,而n=p*q;因此RSA破解的核心问题就变成了分解n;当n的位数比较少时,我们可以通过计算机,运用遍历的方法,暴力破解出p和q,但是如果p,q是非常大的素数时呢?例如p,q是2048位的素数,那么暴力破解的耗时将剧增,这也就是所谓的大素数相乘不可分解的数学难题;

目前,随着计算机计算能力的增加,暴力破解的耗时也开始减少,p,q取512位素数的情况已经不堪一击,现在最安全的做法是取2048位,如果有一天,系统计算能力取得突破进展(比如量子计算),那么将是“灾难”的一天。

RSA加密算法中的数学原理相关推荐

  1. 【转载】word2vec 中的数学原理详解

    文章目录 一.前言 二.预备知识 三.背景知识 四.基于 Hierarchical Softmax 的模型 五.基于 Negative Sampling 的模型 六.若干源码细节 原文传送门: wor ...

  2. 转:word2vec 中的数学原理详解

    1,目录和前言 https://blog.csdn.net/itplus/article/details/37969519 2,预备知识:逻辑回归.贝叶斯公式.霍夫曼树 https://blog.cs ...

  3. c语言围棋原理,围棋中的数学原理

    围棋是我国传统"四艺"之一,文献所载可以追溯到春秋战国时期.如今,围棋已经变成国际通行的棋种.可是你知道吗,围棋不仅是我国的文化遗产,其中还隐藏着很多有趣的数学小知识. (1)&q ...

  4. 魔术中的数学艺术系列讲座(三)——魔术中的数学原理

    魔术中的数学艺术 白色 (3)魔术中的数学原理 REC 白色 作者简介: 田汸,腾讯算法工程师,MatheMagician原创公众号作者.主攻NLP,擅长统计算法,数学建模.业余研究魔术16年,是资深 ...

  5. 约瑟夫问题与魔术(五)——魔术《自我匹配的奇迹》中的数学原理

    特别通知:2020马丁加德纳聚会已于本周开始在线上举行,MatheMagician也将在10.18周日晚8点带来题为<数学魔术的魅力>讲座,详情请点击: 2020中国纪念马丁·加德纳聚会线 ...

  6. Python机器学习中的数学原理详解(补充勘误表)

    数学是机器学习和数据科学的基础,任何期望涉足相关领域并切实领悟具体技术与方法的人都无法绕过数学这一关.在一篇题为<放弃幻想,搞AI必须过数学关>的网文中,作者一针见血地指出想从事AI相关工 ...

  7. 机器学习中的数学原理——随机梯度下降法

    这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下<白话机器学习中的数学--随机梯度下降法>! ...

  8. 机器学习中的数学原理——过拟合、正则化与惩罚函数

    通过这篇博客,你将清晰的明白什么是过拟合.正则化.惩罚函数.这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎 ...

  9. 机器学习中的数学原理——F值与交叉验证

    通过这篇博客,你将清晰的明白什么是F值.交叉验证.这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评 ...

  10. 机器学习中的数学原理——似然函数

    这个专栏主要是用来分享一下我在 机器学习中的 学习笔记及一些 感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎 私信或者 评论区留言!这一篇就更新一下< 白话机器学习中的数学--似然函数> ...

最新文章

  1. 阿里云 OSS+CDN
  2. Scala多线程:使用线程池Executors提交Runnable任务代码示例
  3. docker ps命令详解 列出运行中的容器
  4. Magento重建所有索引方法
  5. mysql登陆时报错PID_Mysql 启动错误:the server quit without updating pid
  6. layui 解决浏览器自动填充form表单账号和密码输入框的问题
  7. Collecting package metadata (current_repodata.json): failed(解决方案)
  8. java设置excel自动调整行高_Java设置Excel自适应行高、列宽
  9. 如何用photoshop给图片添加水印?
  10. SH-SSS丨CUSIDE:分块、模拟未来、解码的流式语音识别新框架
  11. 用C#WebClient+Server酱写一个监听网站通知的功能
  12. C# 二维码 和条形码生成
  13. Speedoffice(excel)如何制作斜线表头
  14. GPS授时系统(北斗授时设备)应用及案例
  15. 国内外量化平台发展现状析
  16. R语言: 单个正态总体的假设检验(单样本t检验)
  17. 「Unity3D」(9)自定义编辑器菜单扩展总结
  18. SQL Sever 2019的下载与安装【Win10一站式服务】
  19. 大龄计算机考研 考研帮,一个三十五岁大龄考生的考研历程
  20. Java常量池理解与总结(讲的非常浅显易懂)

热门文章

  1. 深入游戏变速底层原理以及内核变速的实现
  2. 程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路
  3. ChinaITLab-Linux工程师培训课程笔记1
  4. 小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析
  5. 惠普怎样启动计算机上的无线功能,如何打开hp无线网卡?如何打开惠普笔记本电脑无线网卡...
  6. 富士通Fujitsu DPK8400E+ 打印机驱动
  7. 【Sinclair/记录】Rainmeter在电脑桌面添加GIF
  8. linux文本编辑器英文名,科学网—带格式的文本编辑器Typora 之介绍 - 丁祥欢的博文...
  9. 哈工大物理学专业计算机知识怎样,哈尔滨工业大学应用物理学专业怎么样
  10. 透过 Linux 内核看无锁编程