题目:

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flag提交

求解过程:

首先计算n和ϕ(n)

n=p*q  ϕ(n)=(p-1)(q-1)

d是e关于模ϕ(n)的乘法逆元,即d⋅e≡1 (mod ϕ(n))

根据扩展欧几里得算法求解d

编写脚本求解:

# 扩展欧几里得算法:用来计算 a 和 b 的最大公约数,同时返回贝祖系数 x 和 y
# 使得 a * x + b * y = gcd(a, b)
def extended_gcd(a, b):
# 基本情况,如果 b == 0,则 gcd(a, b) = a, x = 1, y = 0
if b == 0:
return a, 1, 0
# 递归调用扩展欧几里得算法,获取 gcd(a, b) 和贝祖系数 x, y
gcd, x1, y1 = extended_gcd(b, a % b)
# 更新贝祖系数 x 和 y,返回新的系数
x = y1
y = x1 - (a // b) * y1
return gcd, x, y # 求解模逆元:即求解 x 使得 a * x ≡ 1 (mod m)
def mod_inverse(a, m):
# 调用扩展欧几里得算法,获取 gcd(a, m), x, y
gcd, x, y = extended_gcd(a, m) # 如果 a 和 m 不是互质的,说明没有模逆元
if gcd != 1:
raise ValueError(f"{a} 和 {m} 没有互质,无法求模逆元")
else:
# 返回 x 的模 m 结果,即为 a 关于模 m 的逆元
return x % m # 主函数:根据给定的 p, q 和 e 计算 RSA 私钥 d
def rsa_private_key(p, q, e):
# 计算 RSA 的 n 和 φ(n)
n = p * q # 公钥的模数 n = p * q
phi_n = (p - 1) * (q - 1) # 欧拉函数 φ(n) = (p-1)(q-1) # 计算 d = e^(-1) mod φ(n),即 e 的模逆元
d = mod_inverse(e, phi_n) # 返回计算得到的私钥 d
return d # 给定的 RSA 参数
p = 473398607161
q = 4511491
e = 17 # 调用 rsa_private_key 函数计算私钥 d
d = rsa_private_key(p, q, e) # 输出计算得到的私钥 d
print(f"私钥 d 的值为: {d}")

RSA密钥生成-已知p、q、e求私钥d的python脚本的更多相关文章

  1. RSA密钥生成与使用

    RSA密钥生成与使用 openssl生成工具链接:http://pan.baidu.com/s/1c0v3UxE 密码:uv48 1. 打开openssl密钥生成软件打开 openssl 文件夹下的  ...

  2. openssl-0.9.8k_WIN32(RSA密钥生成工具

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha openssl-0.9.8k_WIN32(RSA密钥生成工具

  3. TZOJ 3209 后序遍历(已知中序前序求后序)

    描述 在数据结构中,遍历是二叉树最重要的操作之一.所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问. 这里给出三种遍历算法. 1.中序遍历的递归算法定义:  ...

  4. python应用-已知三角形的边长求他的面积和周长

    """ 已知三角形的边长求他的面积和周长 Author:罗万财 Date:2017-3-3 """ import math a=float( ...

  5. 2019-8-31-C#-已知点和向量,求距离的点

    title author date CreateTime categories C# 已知点和向量,求距离的点 lindexi 2019-08-31 16:55:58 +0800 2018-05-08 ...

  6. C语言:已知三角形三边长求面积

    //已知三角形三边长求面积 #include <stdio.h> #include <math.h> int main() { float a,b,c,p,s; int x=0 ...

  7. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  8. windows上RSA密钥生成和使用

    一,下载安装windows平台openssl密钥生成工具,执行安装目录bin下的"openssl.exe",执行后弹出命令窗口如下 运行 二,生成私钥 输入"genrsa ...

  9. poj1190,DFS/已知一个等式,求另一个最小值

    7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.  设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱. ...

  10. C# 已知点和向量,求距离的点

    已知一个点 P 和向量 v ,求在这个点P按照向量 v 运行距离 d 的点 B . 已经知道了一个点 P 和他运动方向 v ,就可以通过这个求出距离点 P 为 d 的点 B. 首先把 v 规范化,规范 ...

随机推荐

  1. 鸿蒙OS高级技巧:打造个性化动态Swiper效果

    前言 在鸿蒙OS的广阔天地中,开发者们有机会创造出令人惊叹的用户体验.最近,我着手设计一款具有独特滑动效果的Swiper组件,它在滑动时能够迅速进入视野,同时巧妙地将旧的cell隐藏到视线之外.本文将 ...

  2. Anaconda下载以前的旧版本

    由于Anaconda新的版本,可能不太适合我们当前开发,我们需要下载历史版本. 可以尝试从两个地方下载:1.推荐从 "清华大学开源软件镜像站" 下载:https://mirrors ...

  3. 实时社群技术专题(一):支持百万人超级群聊,一文读懂社群产品Discord

    本文由腾讯产品体验设计师volihuang分享,原题"千万级增长,实时社交产品Discord拆解",本文收录时有内容修订和大量排版优化. 1.引言 对于大多数人而言,对即时通讯IM ...

  4. Solution Set -“似一捧细泉的奔逃”

    目录 0.「OurOJ #47912」优美的分配方案 1.「OurOJ #47927」海之女仆 2.「OurOJ #47950」中档题 3.「OurOJ #47933」坐标 4.「OurOJ #479 ...

  5. IoC究竟shift什么?——IoC的基础分析

    IoC全称Inversion of Control,直译为控制反转.这是一种设计理念,并非技术. 在明白控制反转之前,应该知道"反转"反的是什么. 被反转的正转 我们从生活中的做饭 ...

  6. java-文件输入输出处理

    --------------------------------------------------- 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的 ...

  7. Mac上安装mongoDB详细教程

    Mac OSX 平台安装 MongoDB MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/download ...

  8. ctfshow--web4 include日志注入

    这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...

  9. java重载-构造方法也存在重载-数据类型的提升

    重载 1.一个类中不能声明多个相同的方法,属性. 2.上面的相同指的是方法名,参数列表相同.和返回值类型无关. 3.如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,在jav ...

  10. react报错Can't resolve 'react' in 'E:\reactweb\preact\my-app\node_modules\react-dom\cjs'

    执行如下: npm install -g react npm install react --save 类似这种依赖项(react,react-dom 等)报错,哪个报错执行哪个即可 执行上述两句就 ...