N不互素

两个n里使用有相同的素数p或q
在CTF中,同样一个e(一般为65537)和m, 有两个或多个n和c时,那么n之间可能是共享素数

题目

n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537
m = bytes_to_long(flag)
c = pow(m, e, n1)
c = pow(c, e, n2)print("c = %d" % c)output
c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264

解题脚本

此题相较于标准的N不互素题目略有改动,只给了一个密文c。
所以我们需要在给定的c2基础上解出c1,再根据解出的c1以及n不互素的特质求出的p,q1解出phi_n1和d,进而求出m

from Crypto.Util.number import *
import  gmpy2
n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537
c2 = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264p = gmpy2.gcd(n1,n2)
q1 = n1//p
q2 = n2//p
phi_n1 = (p-1)*(q1-1)
phi_n2 = (p-1)*(q2-1)
d1 = gmpy2.invert(e,phi_n1)
d2 = gmpy2.invert(e,phi_n2)
c1 = pow(c2,d2,n2)
m = pow(c1,d1,n1)
flag = long_to_bytes(m)
print(flag)

flag:

SangFor{qSccmm1WrgvIg2Uq_cZhmqNfEGTz2GV8}

【别质疑,先相信。】

CTF Crypto---RSA N不互素相关推荐

  1. CTF ——crypto ——RSA原理及各种题型总结

    RSA原理及各种题型总结 Table of Contents 一,原理: 信息传递的过程: rsa加密的过程: 二,CTF 中的 常见的十种类型: 1,已知 p ,q,e   求 d? 2,已知 n( ...

  2. CTF Crypto RSA合集(新生赛难度)

    食用简介 下面是本人新生赛时遇到的一些RSA密码题,题目名后大概写有类型便于查找 题目较多可以选择性食用 1.buuctf RSA 题目:在一次RSA密钥对生成中,假设p=473398607161,q ...

  3. CTF Crypto中涉及的AES题目

    CTF Crypto中涉及的AES题目 单独涉及AES_ECB模式 单独涉及AES_CBC模式 ProblemProblemProblem AnalysisAnalysisAnalysis Solvi ...

  4. CTF CRYPTO从零开始的RSA2

    题源:BUUCTF RSA2 题目 e = 65537 n = 24825400785152624117772152669890180298583276617622160961225887737162 ...

  5. 基于Python实现的CTF Crypto加密解密工具

    纯小白,记录一下自己小学期内做的项目.基于Python实现一个能够对凯撒密码.维吉尼亚密码.栅栏密码.摩斯密码.Base64编码.Ascii编码.AES.DES.RSA.RC4的加密解密以及维吉尼亚密 ...

  6. x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error“

    执行下面命令初始化k8s集群时 kubeadm init --pod-network-cidr 10.21.0.0/16 \--image-repository registry.cn-hangzho ...

  7. BugKu CTF(Crypto篇)---where is flag 5

    BugKu CTF(Crypto篇)-where is flag 5 文章目录 BugKu CTF(Crypto篇)---where is flag 5 题目描述 首先一看就是base64 解码内容好 ...

  8. CTF 中RSA的常见解析

    0x01 前言 这里就不讨论数论的基础了,进行RSA的题目解答,至少要懂得基本的数论知识的,如果不了解数论的基本知识的话,网上相关内容还是挺多的. RSA基于一个简单的数论事实,两个大素数相乘十分容易 ...

  9. 密码学--CTF Crypto 总结

    密码学简介 密码学(Cryptography)一般可分为古典密码学和现代密码学. 其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰 ...

  10. [CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)

    目录 RSA算法概述 思路一.分解n得到p,q 例题:BUUCTF:[WUSTCTF2020]babyrsa 思路二.低加密指数攻击(e很小) 例题:BUUCTF DangrousRSA 思路三.低指 ...

最新文章

  1. web前端(13)—— 了解JavaScript,JavaScript的引入方式
  2. redhat-problem to be research
  3. 浅析自助式商城网站的制作步骤——简单易上手
  4. 两种富文本编辑器-ckeditor和ueditor
  5. AMD宣布裁员7% 约710员工将失去工作
  6. 百度元宇宙产品“希壤”将于12月27日发布
  7. ORA-00904: NAME: 标识符无效
  8. Android FloatingActionButton(FAB) 悬浮按钮
  9. 【目标检测】mAP评价标准
  10. wordpress知更鸟begin主题添加菜单字体图标
  11. 关于商业计划书(Business Project,以下简称BP)写作那些事儿(一)
  12. python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能
  13. 白帽黑客必备的网络安全基础问答
  14. 每日10行代码82:网上购物活动满减凑单计算器
  15. iOS 如何判断静音开关是否打开
  16. 一个包含30行代码的Python项目:如何在您最喜欢的Twitcher流式传输时设置SMS通知...
  17. 电力负荷预测三篇综述总结
  18. R语言读取文件报错之二:Error in read.table(“xxxx.txt“, header = TRUE) : 列的数目比列的名字要多
  19. 强化学习之迷宫Q-Learning实践笔记——入门篇
  20. 世界上最神奇的数字是: 142857

热门文章

  1. 微信小程序在线知识答题有奖多开版源码
  2. 集成测试的策略详解:
  3. Kingdom Rush 国王保卫战图文攻略
  4. Automader 使用教程 - 01 你好,左右抽
  5. 推挽电路介绍、设计与分析
  6. 女性每天喝酸奶的好处是什么?
  7. 未解——Matlab积分运算int函数
  8. Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife
  9. 有信仰与无信仰家族200年对比,让世人震惊!!
  10. oracle高可用培训,企业级Oracle数据库高可用性(OracleDataGuard)DBA培训视频全集