【Crypto | CTF】BUUCTF RSA2

news/发布时间2024/5/15 16:09:15

天命:密码学越来越难了,看别人笔记都不知道写啥

天命:莫慌,虽然我不会推演法,但我可以用归纳法

虽然我不知道解题的推演,但我可以背公式啊哈哈哈

虽然我不会这题,但是我也能做出来

公式我不知道如何推演,但是每一步具体要干什么,我还是能很清楚分析

通过哪些能得到哪一个,每一个东西的作用还是能理解的

步骤一:首先通过遍历公钥e,放入公式,寻找p 和 q

步骤二:也就是说有公钥e 和 质数相乘 和 一半的明文

步骤三:就能利用这个公式得到 两个质数:p 和 q

步骤四:常规计算 -> 通过两个质数计算欧拉函数

步骤五:计算 e 关于 欧拉函数的模逆:d

步骤六:把模逆和质数相乘放入函数就能解密密文,得到明文

from gmpy2 import *
from Crypto.Util.number import *e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751# 遍历从 1 到 e-1 的所有整数,尝试寻找n的质因子 p
for i in range(1,e):# 这里公式我也不太懂的# 如果能被i整除,则检查n是否有一个因子等于 (dp*e-1) // i + 1if (dp * e -1)%i == 0:if n % (((dp * e -1) // i ) + 1) == 0:# 如果找到这样的因子p,则计算另一个因子qp = ((dp * e - 1)//i) +1q = n // (((dp * e - 1) // i) +1)# 计算欧拉函数phi,phi = (p-1) * (q-1)phi = (q-1) * (p-1)# 使用扩展欧几里得计算e关于phi的模逆dd = invert(e,phi)# 使用得到的d和n对密文c进行解密,得到明文mm = pow(c,d,n)breakprint(long_to_bytes(m))  # 照旧,把ma转16进制转字符输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/BUpL/3237.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Qt事件过滤器

1. 事件过滤器 void QObject::installEventFilter(QObject *filterObj) bool eventFilter(QObject *obj, QEvent *event); filterObj表示事件筛选器对象,它接收发送到此QObject对象(安装事件过滤器的部件对象)的所有事件。筛选器可以停止事件…

LeetCode JS专栏刷题笔记(二)

一、前言 LeetCode - JavaScript 专栏刷题笔记第二篇。 第一篇刷题笔记详见:LeetCode JS专栏刷题笔记(一) 二、算法题目 1. 复合函数 LeetCode地址:2629. 复合函数 请你编写一个函数,它接收一个函数数组 [f1, f2, …

SQL-FEFT JOIN (拼接表)

语法 SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_nametable2.column_name; 按照一定规则,将表table1和表table2拼接起来。 例: Employees 表: ------------------------ | Column Name | Type | ------…

挑战!贪吃蛇小游戏的实现(3)

经过(1)(2)两篇文章的介绍,相信大家对该游戏的实现已经有了具体的思路,废话不多说,让我们开始实现相关的代码吧! 1.游戏主逻辑 void test() {int ch 0;srand((unsigned int)time(NU…

【Linux系统化学习】动静态库 | 软硬链接

目录 硬链接和软链接 硬链接 软链接 动态库和静态库 静态库 静态库的生成 静态库的使用 将库打包和使用 动态库 动态库的生成 动态库的使用 库搜索路径 硬链接和软链接 硬链接 上篇文章我们说到真正找到磁盘上的文件并不是文件名,而是inode。其实在…

【Appium UI自动化】pytest运行常见错误解决办法

通过Appium工具录制代码在pycharm上运行报错: 错误一: 1.提示 setup() 方法运行 error failed 解决办法:未创建 init __ 方法,创建一个空的__init.py文件就解决了。 原因: 错误二: 2.运行代码&#xff…

解决SpringAMQP工作队列模型程序报错:WARN 48068:Failed to declare queue: simple.queue

这里写目录标题 1.运行环境2.报错信息3.解决方案4.查看解决之后的效果 1.运行环境 使用docker运行了RabbitMQ的服务器: 在idea中导入springAMQP的jar包,分别编写了子模块生产者publisher,消费者consumer: 1.在publisher中运行测试…

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图提供一个强大的机制,通过预先计算并将查询结果集存储为物理表来提高查询性能。本教程将使用 DVD Rental Database 数据库作为演示例子,指导你在 PostgreSQL中创建实体化视图。 了解实体化视图 实体化视图是查询结果集的快照&…

【ECharts】调用接口获取后端数据的四种方法

使用eacharts做大屏,需要使用后端数据,下面的方法是自己试过有效的,有什么不对的,望各位大佬指点。 目录 方法一:在mounted中使用定时器调用eacharts方法(定时器可以获取到data中的数据) 方法…

【C++精简版回顾】7.析构函数

1.析构函数 class MM { public:MM() {}MM(const char* a) {name new char[strlen(a)1];strcpy(name, a);cout << name << endl;}~MM() {delete[] name;name nullptr;cout << "调用析构函数" << endl;} private:char* name; }; int main(…

设计模式——工厂模式

定义: ​ 工厂顾名思义就是创建产品&#xff0c;根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式&#xff0c;根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建&#xff0c;是一种创建型模式。 本章代码:小麻雀icknn/设…

Qt应用-录音机实例

本文讲解Qt录音机应用实例。 实现的功能 录音开始暂停停止、已录时间显示。 录音文件输出。 可用录音设备查找。 录音信息显示。 界面设计 UI文件 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>…

error: src refspec master does not match any

当git报这个错的时候&#xff0c;证明我们执行了git push命令&#xff0c;但是我们会发现代码提交不上去 git push -u origin main 执行这个命令就可以解决&#xff08;注释&#xff1a;现在master改成了main&#xff09;

C语言之mkdtemp()特定占位符:XXXXXX 用法实例(八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

普中51单片机学习(十四)

中断系统 中断的概念 CPU在处理某一事件A时&#xff0c;发生了另一事件B请求CPU迅速去处理&#xff08;中断发生&#xff09;,CPU暂时中断当前的工作&#xff0c;转去处理事件B&#xff08;中断响应和中断服务)&#xff0c;待CPU将事件B处理完毕后&#xff0c;再回到原来事件…

10.vue学习笔记(组件数据传递-props回调函数子传父+透传Attributes+插槽slot)

文章目录 1.组件数据传递2.透传Attributes&#xff08;了解&#xff09;禁用Attributes继承 3.插槽slot 1.组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和 自定义事件 两种方式 props&#xff1a;父传子 自定义事件&#xff1a;子传父 props通过额外方…

nginx服务

“欢唱吧&#xff0c;呼唤它&#xff0c;回来啊~” Web服务器简介 Web服务器&#xff0c;一般是指“网站服务器”&#xff0c;其本质就是驻留于互联网中&#xff0c;某一台机器(计算机)上的进程(程序)。Web服务器通常就是为用户提供信息浏览服务&#xff0c;更可以放置数据文件…

强化学习入门(Matlab2021b)-创建环境【2】

目录 1 前言2 利用step和reset函数创建自定义环境2.1 对象描述2.2 reset函数2.3 step函数2.3 构建自定义环境3 使用匿名函数传递额外的参数4 可视化检查自定义函数的输出参考链接1 前言 本文介绍如何基于MATLAB编写step、reset函数,创建自己的强化学习环境(Environment)。 使…

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

【C语言经典100题#4】判断三角形

题目名称&#xff1a; 输入三个整数a,b,c&#xff0c;判断由a,b,c作为三条边组成的三角形&#xff0c;如果不能组成三角形则输出&#xff1a;非三角形&#xff1b;如果是三角形&#xff0c;再继续判断&#xff0c;如果是等边三角形&#xff0c;则输出&#xff1a;等边三角形&a…
推荐文章