首页 > 其他分享 >RSA趣题篇(简单型)

RSA趣题篇(简单型)

时间:2023-11-22 17:56:25浏览次数:25  
标签:phi gmpy2 RSA flag 趣题 简单 import 65537

1、n与p的关系

题目

('n=', 288990088827100766680640490138486855101396196362885475612662192799072729620922966280891529295418086760877864145641240773774844610436051331306946338447987578274717185638059894743079958222428285199328796227699729755905906693841390517397968838979989187937765197009779831853782677148778833145391472483838410348187851940691573340443869780062542939942374320161963733291697585221383236756651125859306190611469903757185440175993363742018028809952801247846742033092984755533015067691332105526414972647382492862838910121236931498154729282070633749340622741556189535964547876244515672975306477660510791252904365137930260201368678082714836609782629541945700299956150734915268018652247423889358580950207466855040229003192308083531802714903385087417356434589306892888679309614923529675726467403933384636928018988851880153857796741120106443942767510880882869047315219885712389114991426210349790111241522116230105084964008967100552072784232695481018329040160132729906613461492188324496134449714224077399892244195702892564301367979224008861187860872226748641058472580561639257018145326272111688770894219937657825160193141745581367365405561724485260621462608988652159867916009465022291576279442397617091954522421449924662838224659158273250901130749121L)
('e=', 65537)
('c=', 137779053430049038434216593290618874948270200405399256269581378223281016900970652718848813337302671790604519081916876544192809184345327660912429768032693176503712428533118856746085101104530004384957878944306712448749988496680310178630490784192543750138162129344588248045230306419533817167822335810463544443187846127211253432794996440212197855199829148459690714008745033082890861457636322467364543567930633647015286211438515604345302463094804730828792938997761910285052058358568926162211399619255066215361304899897417756093402335995371832711502872437222512001157985528518717742208913450911897520543227613018962674806657657794649288850627452188012334771673285026593343941925348598797901401883986370253828688950287301471120024830787649255742214626285600948267746659887690844720659848203176190617138006403190722263638569661414450881185857994056115115153097909046365223008051874366779117102760347630728800614449748348771220711988694991053148346720284163230564679943853428714970819836241190140660788978119501945023060842021831844356818641202498764351298545672779480524641463732128037763042975104375933047678750844329826766152652487655163730244337514529371558702619207820731799113790535682515957476301736026894861608980444780607729321721653L)

我的解答

只给这点信息因此n必可分解。n和c都是长整型数据,直接转十进制超出范围,因此尝试把末尾L删去分解n可得某个数的四次方,看作p

有了p就正常思路解就行。

已知n = p * q 以及 n = p ** 4  => q = p ** 3

=> phi = (p - 1) * (p ** 3 - 1)

但尝试发现用此phi解不出来最终flag。

phi展开后省略了一些小数据尝试几遍发现使用 phi = p ** 4 - p ** 3 (即p ** 3(p - 1))可行

(这里不知道是为什么?可能是因为p**3-1太大了完全可以忽略掉-1?)

最终exp:

from Crypto.Util.number import *
import gmpy2
from gmpy2 import iroot
c = 137779053430049038434216593290618874948270200405399256269581378223281016900970652718848813337302671790604519081916876544192809184345327660912429768032693176503712428533118856746085101104530004384957878944306712448749988496680310178630490784192543750138162129344588248045230306419533817167822335810463544443187846127211253432794996440212197855199829148459690714008745033082890861457636322467364543567930633647015286211438515604345302463094804730828792938997761910285052058358568926162211399619255066215361304899897417756093402335995371832711502872437222512001157985528518717742208913450911897520543227613018962674806657657794649288850627452188012334771673285026593343941925348598797901401883986370253828688950287301471120024830787649255742214626285600948267746659887690844720659848203176190617138006403190722263638569661414450881185857994056115115153097909046365223008051874366779117102760347630728800614449748348771220711988694991053148346720284163230564679943853428714970819836241190140660788978119501945023060842021831844356818641202498764351298545672779480524641463732128037763042975104375933047678750844329826766152652487655163730244337514529371558702619207820731799113790535682515957476301736026894861608980444780607729321721653
n = 288990088827100766680640490138486855101396196362885475612662192799072729620922966280891529295418086760877864145641240773774844610436051331306946338447987578274717185638059894743079958222428285199328796227699729755905906693841390517397968838979989187937765197009779831853782677148778833145391472483838410348187851940691573340443869780062542939942374320161963733291697585221383236756651125859306190611469903757185440175993363742018028809952801247846742033092984755533015067691332105526414972647382492862838910121236931498154729282070633749340622741556189535964547876244515672975306477660510791252904365137930260201368678082714836609782629541945700299956150734915268018652247423889358580950207466855040229003192308083531802714903385087417356434589306892888679309614923529675726467403933384636928018988851880153857796741120106443942767510880882869047315219885712389114991426210349790111241522116230105084964008967100552072784232695481018329040160132729906613461492188324496134449714224077399892244195702892564301367979224008861187860872226748641058472580561639257018145326272111688770894219937657825160193141745581367365405561724485260621462608988652159867916009465022291576279442397617091954522421449924662838224659158273250901130749121
e = 65537
p = iroot(n,4)[0]
phi = p**4 - p**3
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))
#flag{5a9d88e1-e588-11ed-a829-907841e2ffbc}

 

标签:phi,gmpy2,RSA,flag,趣题,简单,import,65537
From: https://www.cnblogs.com/mumuhhh/p/17849927.html

相关文章

  • GPG 相关简单笔记
    工作中接触到GPG相关,特此记录下一些简单的用法和需求。使用加密加密是采用公钥进行加密,通常情况下,加密需要指定USER,或者USER-ID指令通常是:gpg-uuser-oencrypted.txt-eorigin.txt签名签名只是让接受者判断,这个文件是不是让你接受的,实际上即使不是以你的用户签名的......
  • 今天突然发现RSA对加密报文是有字数限制的TAT
    之前一直在用Hutool的RSA加密,从没碰到过字数限制问题,就也没仔细研究过RSA,hutool的好东西嘛都是开箱即用,主打一个能用就不细想(当然下面的事情说明要提升技术还是得多想想哈哈哈,不然碰到问题那是一脸懵)。结果今天在和对接方沟通时,对方对着我提供的接口文档一顿捣鼓,接口入参需要进行......
  • 简单的文件加密程序(md5xor异或winlinux)
    简介小程序是基于md5+password+xor的组合方式来加密文件。程序支持跨平台(Windows/Linux)。使用方法: 源文件清单:main.c  md5.c  md5.h  setup.sh 完整代码(main.c):#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#i......
  • 简单的低开编辑器(二):实现组件拖拽
    好家伙, 0.代码已开源Fattiger4399/lowcode-demo:一个简单的低代码编辑器技术栈:Vue3element-plusjsx(github.com)该章实现的效果:组件从物料区到画布的拖拽 1.分析  先来分析,鼠标点击物料区的某个组件,再将其拖拽到画布这个过程我们如何实现组件的拖拽??......
  • SpringBoot实现简单文件上传功能
    通过SpringBoot实现了表单下的文件上传,前后端分离情况下的文件上传。本案例不连接数据库,只做基本的文件上传操作。在SpringBoot中不需要额外导入其他依赖,正常引入即可。后端controller的写法package com.dailyblue.java.controller;  import org.springframework......
  • 路由层之简单路由配置 APPEND_SLASH
    1路由参数#第一个参数是正则表达式#第二个参数是视图函数内存地址#第三个参数是个字典{'name':lqz,'age':18},给视图函数传递默认值#第四个参数name,当前路由的别名,用作反向解析url(r'^home2/',views.home,{'name':'lqz','age':19},name='home�......
  • DCMTK c-find简单示例
    DcmSCUscu; //设置连接信息 scu.setPeerAETitle(serverAETitle); scu.setPeerHostName(serverHost); scu.setPeerPort(serverPort); scu.setAETitle(clientAETitle); //设置协议上下文传输编码格式 OFList<OFString>ts; ts.push_back(UID_LittleEndianImplicitTransferSynt......
  • springboot中实现上传文件的功能简单示例
    在SpringBoot中实现文件上传可以通过以下步骤:配置文件上传相关的依赖:在项目的pom.xml文件中,添加以下依赖:<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>创建文件上传接口:在......
  • 如何实现一套简单的oauth2授权码类型认证,一些思路,供参考
    背景组内人不少,今年陆陆续续研发了不少系统,一般都会包括一个后台管理系统,现在问题是,每个管理系统都有RBAC那一套用户权限体系,实在是有点浪费人力,于是今年我们搞了个统一管理各个应用系统的RBAC的系统,叫做应用权限中心,大致就是:各个应用在我们系统注册,并录入应用支持的各类权限(如......
  • 用Netty实现一个简单全双工通信
    用Netty实现一个简单全双工通信​ 如题,需要注意在ByteBuf使用的过程中要使用buf.retain()保证buf引用计数大于0,才能够正常使用否则会报异常,原因是pipeline上的handler都是使用NIO线程执行的,因此使用buf的handler和tailhandler(最后调用bufrelease的handler)是不同的线程,因此是异......