前言:仅个人小记。 注意到 RSA 中并不要求消息 m 要和模数 n 互素,而 RSA 所依赖的“费马定理,欧拉定理”,仿佛都要要求 m 须和模数 n 互素。这里给出针对 RSA 中 n 为两个素数乘积时的具体解释,实际上应归属于广义的欧拉定理,这里暂不讨论广义的欧拉定理。同时,根据本文的推导逻辑(不做讨论),容易直觉上知道 RSA 中 n 不应该是多个素数的乘积,而只能是2个素数的乘积。(因为 m 中可以缺不止一个素数,而RSA的正确性要求当 m和n 不互素的时候,m 中最多只能缺一个素数)

前要知识

  1. 普通版的欧拉定理 aφ(m)%m≡1,其中a⊥m,φ(⋅)是欧拉函数{a}^{\varphi(m)} \%m\equiv1,其中a\perp m, \varphi(\cdot)是欧拉函数aφ(m)%m≡1,其中a⊥m,φ(⋅)是欧拉函数公式图片展示如下,
  2. n=pq,其中 p,q 为素数,则若 m⊥nm\perp nm⊥n ,则必然m=kpm=kpm=kp 或者 m=kqm=kqm=kq,m 只可能是这两种形式之一
  3. n=pq,其中 p,q 为素数,则 φ(n)=φ(p)φ(q)\varphi(n)=\varphi(p)\varphi(q)φ(n)=φ(p)φ(q)

RSA 使用要求

c≡me(modn)c\equiv m^e\ (mod \ n)c≡me (mod n)ed≡1(modφ(n))ed\equiv1 (mod\ \varphi(n))ed≡1(mod φ(n))m∈{0,1,...,n−1}m\in \{0,1,...,n-1\}m∈{0,1,...,n−1}
注意:不要求 m⊥nm\perp nm⊥n.

RSA 成立的根基在于 med=mkφ(n)+1≡m(modn)m^{ed}=m^{k\varphi(n)+1}\equiv m(mod\ n)med=mkφ(n)+1≡m(mod n)恒成立。

显然,当 m⊥nm\perp nm⊥n时,上式直接满足欧拉定理。

当 m⊥̸nm\not\perp nm​⊥n 时,这是本文讨论的重点,讨论如下:
这里只结合 RSA 这个特殊环境讨论,只考虑 n=pq,其中p、q为两个素数n=pq, 其中p、q为两个素数n=pq,其中p、q为两个素数
我们要证明mφ(n)+1=m,m⊥n,n=pq,其中p,q为素数m^{\varphi(n)+1}=m, m\perp n,n=pq,其中 p,q 为素数mφ(n)+1=m,m⊥n,n=pq,其中p,q为素数
由前要知识 2 知道,必然 m 的形式只可能为 m=kp或者m=kq,k为常数m=kp 或者 m=kq,k 为常数m=kp或者m=kq,k为常数,我们只讨论 m=kpm=kpm=kp(另一种情况的讨论完全一致)。
因为 p、q 是素数,容易知道 kp⊥qkp\perp qkp⊥q。进而根据上述普通版欧拉定理知道,必然有

(kp)φ(q)≡1(modq)(kp)^{\varphi(q)}\equiv 1 (mod \ q)(kp)φ(q)≡1(mod q)故而得到

((kp)φ(q))φ(p)≡1(modq)((kp)^{\varphi(q)})^{\varphi(p)}\equiv 1(mod \ q)((kp)φ(q))φ(p)≡1(mod q)进而有

(kp)φ(n)=(kp)φ(p)φ(q)≡1(modq)(kp)^{\varphi(n)}=(kp)^{\varphi(p)\varphi(q)}\equiv1(mod\ q)(kp)φ(n)=(kp)φ(p)φ(q)≡1(mod q)
进而,(kp)φ(n)=sq+1,s为某个整数(kp)^{\varphi(n)}=sq+1,s 为某个整数(kp)φ(n)=sq+1,s为某个整数
注意,上面是等式,不是同余式。故而可以将其带入要证明的式子左侧,得到

(kp)φ(n)+1=(kp)φ(n)(kp)=(sq+1)(kp)=sqkp+kp=skqp+kp=skn+kp≡kp(modn)(kp)^{\varphi(n)+1}=(kp)^{\varphi(n)}(kp)=(sq+1)(kp)=sqkp+kp=skqp+kp=skn+kp\equiv kp(mod\ n)(kp)φ(n)+1=(kp)φ(n)(kp)=(sq+1)(kp)=sqkp+kp=skqp+kp=skn+kp≡kp(mod n)

即 m=kpm=kpm=kp,即 m⊥̸n,n=pq,其中p,q为素数m\not \perp n, n=pq,其中 p,q 为素数m​⊥n,n=pq,其中p,q为素数,有mφ(n)+1≡m(modn)m^{\varphi(n)+1}\equiv m(mod\ n)mφ(n)+1≡m(mod n)
证毕!

RSA中 底数m和模数 n 不互素是仍然成立相关推荐

  1. 一张图片中的分离数据+十进制删改十六进制+连续base32和64编码+okk编码题目--rsa中求d题目

    目录 一张图片题目 题目rsa中求d 题目来源ctf杂项50 一张图片题目 1.图片用010打开后,发现这张图片数据过多,搜索到flag.zip压缩包文件可能需要分离文件 2.使用binwaik发现有 ...

  2. 在非对称加密算法RSA中,假设“大”素数p=5,q=11,试给出计算过程。

    文章目录 1. 题目在非对称加密算法RSA中,假设"大"素数p=5,q=11,试给出计算过程. 2. 分析步骤 3. 抄作业简单粗暴看这里 4. 参考 1. 题目在非对称加密算法R ...

  3. RSA中的中国剩余定理(CRT)和多素数(multi-prime)

    RSA的中国剩余定理(CRT)和多素数(multi-prime) 写了个代码,方便计算大数运算: git@github.com:mrpre/bn_tool.git 本片中的运算都可以使用这个工具进行计 ...

  4. RSA加密原理详解,以及RSA中的数论基础

    文章目录 1. RSA加密算法介绍 2. RSA密钥生成 3. RSA加密和解密 4. RSA的安全性 5.涉及到的数论基础 5.1. 模的逆元 5.1.1. 扩展欧几里得算法计算模逆元 5.1.2. ...

  5. RSA中dp,dq ,npp的求解方法

    这里写目录标题 1.已知n,e,c,npp求解明文 2.已知p,q,dp,dq,c求明文 3.已知e,n,dp/(dq),c求明文 1.已知n,e,c,npp求解明文 npp = (p+2) * (q ...

  6. CERT.RSA中证书的格式

  7. RSA 中根据 (N, e, d) 求 (p, q)

    湖湘杯有一道题是知道 (N,e,d) 求 (p,q),当时用了 e⋅d−1=h⋅φ(n) 这个公式,爆破 h,考虑 φ(n) 与 N 相差不大,可以认为位数相同,求出 φ(n) 之后再根据 N=p⋅q ...

  8. 关于RSA共模攻击e1,e2不互素的解法

    最近做密码学rsa的题目,搜集了很多情况下的rsa解题脚本,记录一下 import gmpy2 import rsa from binascii import a2b_hex import libnu ...

  9. RSA之 两组e与φ(n)不互素解法

    [De1CTF2019]babyrsa 遇事不慌先拆解 求p 求 e1 e2 求q1 求flag 遇事不慌先拆解 题目源代码有四部分,分析最后一部分与flag有关的未知参数有 p,e1,e2,q1 所 ...

最新文章

  1. maven项目添加文件夹报错
  2. Mxnet - Understanding weight shape for Dense Layer MXNET权重参数形状的疑惑(内部设计形式行列谁在前不用管,多个转置运算而已)
  3. golang 指定范围 生成随机数
  4. 内核怎么帮程序建立连接的
  5. python接口自动化测试(七)-unittest-批量用例管理
  6. pyspark若不能运行,需指定支持版本的java:os.environ[‘JAVA_HOME‘] = ‘F:\Java15.0.2‘
  7. 数据库设计说明书的编写
  8. 面试题系列(三)-socket
  9. verilog实现串行通讯协议(serial communications protocols)
  10. IDEA复制文件名快捷键设置
  11. 2021全国省市区街道社区五级SQL文件以及JAVA爬取代码
  12. 数论类题目小结 (转帖)~~~经典…
  13. Openwrt如何添加SD_Card?看这里
  14. java: 未报告的异常错误java.lang.IllegalAccessException; 必须对其进行捕获或声明以便抛出
  15. android 电池(一):锂电池基本原理篇 .
  16. java单链表选票_200个经典C程序源码
  17. ETH 2.0新纪元开启,究竟能带来什么?
  18. MFC_改变窗口大小,随着鼠标的拖动改变
  19. Effective C++ Third Edition 读书笔记 3
  20. 【origin绘图】如何通过插入小图的方法放大局部图

热门文章

  1. 天津大学计算机学院课表,天津大学软件实践1汇编语言课程教学大纲-天津大学计算机学院.PDF...
  2. 阿里云sms短信服务
  3. 服务器的回收站在哪个文件夹,Windows系统回收站的文件保存在哪个磁盘上
  4. springboot 多任务并行执行
  5. xynuoj 1919 三国志
  6. 算法提高 解二元一次方程组
  7. 【Godot】通过属性检查器显示对应节点的脚本属性
  8. C4D学习笔记3-动画-动画渲染流程案例
  9. 【C++ Primer Plus】第6章 分支语句和逻辑运算符
  10. 如何在Windows中使用截图工具进行屏幕截图