题目如下:

题目分析:

发现n很小,可以考虑yafu分解n,或者使用在线网站,例如:http://factordb.com/。即得p,q,r。因为常规rsa只有p和q,则phi = (p -1) * (q - 1),而现在有3个因子,所以phi = (p - 1) * (q - 1) * (r - 1)。

phi = (p - 1) * (q - 1) * (r - 1)的原因:

根据欧拉函数,如果存在n可以分解成两个互质的整数之积,即

  n = p1 * q1

则存在这样的关系:

  phi(n) = phi(p1*q1) = phi(p1) * phi(q1) = (p1 - 1)* (q1 - 1)

举个例子:

n = 56,则phi(56) = phi(8 * 7) = phi(8) * phi(7) = 4 * 6 =24

求解phi(8) 即是求1到8之中有多少个与8互质的数?分别为1,3,5,7。同理得到phi(7)=6,即1,2,3,4,5,6都与7互质。

根据以上即知原因

脚本编写:

from Cryptodome.Util.number import *
import gmpy2 n = 897607935780955837078784515115186203180822213482989041398073067996023639
c = 490571531583321382715358426750276448536961994273309958885670149895389968
e = 0x10001
p = 876391552113414716726089
q = 932470255754103340237147
r = 1098382268985762240184333 phi = (p - 1) * (q - 1) * (r - 1)
t = gmpy2.gcd(e, phi)
#print(t)
d = gmpy2.invert(e, phi)
#print(d)
m = pow(c, d, n)
#print(m)
print(long_to_bytes(m))

总结:

n分解出的因子大于2个的情况下的解法

最新文章

  1. Css定位之relative_慕课网课程笔记
  2. 解析C语言结构体对齐(内存对齐问题)
  3. Oracle循环语句
  4. python mysql 简单总结(MySQLdb模块 需另外下载)
  5. js设置datagriad的行移动
  6. 读<大数据日知录:架构与算法>有感
  7. 好的android编码习惯
  8. Debug程序无法运行解决
  9. Co-prime(容斥)
  10. 比较全的 C# 操作 Word的代码
  11. IT服务(运维)管理实施的几个要点--第二章 人员和组织架构
  12. Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution
  13. 01-初识MySQL数据库
  14. 使用mpvue开发小程序教程(一)
  15. python中的面相对象
  16. PageHelper的使用方法
  17. 【linux】 linux 禁止ping
  18. log4cpp简单使用及踩到的坑
  19. RHEL6安装Oracle 11g R2
  20. Python的幂运算

热门文章

  1. css事件穿透
  2. Python实验报告(第四周
  3. 从SpringBoot启动,阅读源码设计
  4. 220726 T1 树染色问题 (树的直径)
  5. Pep9课下作业
  6. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
  7. NLP之基于TextCNN的文本情感分类
  8. 浅入浅出 1.7和1.8的 HashMap
  9. csharp 基础
  10. 1.nginx学习