Crypto-RSA2

news/2024/7/3 3:50:57

题目:(BUUCTF在线评测 (buuoj.cn))

已知e,n,dp/(dq),c求明文:
首先有如下公式:

dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,n=pq ,φ(n)=(p-1)(q-1)

python代码实现如下:

import libnum
e = 65537
n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
pd = e*dp-1

def ext_euclid(a, b):     
    if b == 0:         
        return 1, 0, a     
    else:         
        x, y, q = ext_euclid(b, a % b)       
        x, y = y, (x - (a // b) * y)         
        return x, y, q

def mod_inv(a, b):
    return ext_euclid(a, b)[0] % b   #函数返回的第一个数%b

for i in range(1,e):
    if pd%i == 0:
        if n%(pd//i+1) == 0:     
            p = pd//i+1
            q = n//p
            fn = (p-1)*(q-1)
            d = mod_inv(e,fn)
            m = pow(c,d,n)
            print(libnum.n2s(m))


http://lihuaxi.xjx100.cn/news/2032203.html

相关文章

Java SE:集合

1. 单列集合顶层接口Collection 集合:将一个个数据结构写好封装成类,方便开发者调用 单列集合底下有两大接口:List和Set List底下有3个集合类:ArrayList(数组)、LinkedList(链表)…

《学成在线》微服务实战项目实操笔记系列(P92~P120)【下】

史上最详细《学成在线》项目实操笔记系列【下】,跟视频的每一P对应,全系列18万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 四、课程发布模块 4.1 (课程发布)模块需求…

计算机网络——15套接字编程

套接字编程 Socket编程 Socket编程:应用进程使用传输层提供的服务才能够交换报文,实现应用协议,实现应用 TCP/IP:应用进程使用Socket API访问传输服务 地点:界面上的SAP 方式:Socket API 目标&#xff1…

System

System System代表程序所在的系统,也是一个工具类 System类提供的常见方法 方法名说明public static void exit(int status)终止当前运行的Java虚拟机public static long currenTimeMillis()返回当前系统的时间毫秒值形式 案例演示 exit() public clas…

CSS的伪类选择器:nth-child()的用法示例

CSS的伪类选择器:nth-child()的用法示例 n可以- , 右边数字只能 第一到第六的td : td:nth-child(n1):nth-child(-n6) td:nth-child(n1):nth-child(-n6)第二到第八的a : a:nth-child(n2):nth-child(-n8) a:nth-child(n2):nth-child(-n8)1等效0n1 , 7等效0n7 , 没有负数,不能…

解决STM32MP157开发板密码登录问题

开发板密码登录问题是很多人遇到的问题,网上有很多帖子,我也参考过,不太适用,很复杂,甚至会被误导,我差点连ubuntu虚拟机都无法登录了。有的密码匹配,有的取消不了密码。 1、密码配置&#xff…

Day-02-01

内容管理模块项目开发 Swagger的使用 1. 导入依赖 <!-- Spring Boot 集成 swagger --> <dependency><groupId>com.spring4all</groupId><artifactId>swagger-spring-boot-starter</artifactId> </dependency> 2. 配置信息 # 在app…

Ubuntu 20.04 安装RVM

RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…