题目:

在一次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. Element库的Vue版本ElementUI的本地引入方法

    最近刚接触ElementUI,发现官方介绍的使用方法中只有npm安装和CDN引入这两种方式,没有本地引入的方法. 因为我的学习环境有时候是断网状态的,所以自己研究了一下本地引入的方法,记录在此. 1. ...

  2. 前端学习openLayers配合vue3(简单的创建一个地图)

    首先搭建一个vue工程化环境,首先我们先来创建一个地图吧 首先我们需要下载 npm i ol 其次我们需要在main.js里面引入相关的css import 'ol/ol.css' 到现在我们就可以开 ...

  3. (六).NET6.0通用读取配置文件功能

    1.新增Microsoft.Extensions.Configuration包 在启动项目下,设置appsettings.json属性为始终复制 2.新建一个文件夹Common,用于存放工具类项目.并 ...

  4. tomcat常用配置详解和优化方法-copy

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  5. Golang-web编程

    https://www.w3cschool.cn/yqbmht/7rcvwcqm.html 第一章 Go环境配置 欢迎来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的.带垃圾回收的. ...

  6. YUV 格式

    1. YUV比例 分三种:YUV44,YUV422,YUV420 2. YUV排布 分三种:YUV planar,YUV Semi-Plannar,YUV packed 以YUV422 8*4 为例 ...

  7. 联想服务器安装Centos8.3

    准备 1.服务器型号:ThinkSystem SR158 2.安装系统:Centos8.3 3.刻镜像工具:rufus 启动盘制作 我这里选择的是rufus,没有用UltraISO,因为制作的镜像经常 ...

  8. Codeforces Round 962 (Div. 3)

    题目链接:Codeforces Round 962 (Div. 3) 总结:ABC秒过,D有点难评了,E优化很妙. A. Legs tag:签到 void solve(){ cin >> ...

  9. 一个9年archlinux重度使用者自述

    系统没有高低贵贱,主要还是使用的人,哪个跟你更契合.对我而言, archlinux就是最契合的那个.本文主要是对archlinux使用做一个粗浅的介绍,如果能勾起你一丝兴趣,那就更好了. 第一部分:初 ...

  10. Lua字节数组与float互转

    纪念那些在双流工厂奋斗的日夜,防爆表屏项目 是一次很成功的实践,包括设计的页面堆栈和跳转机制 历史回退机制 页面密码保护机制  串口分包机制 ,运用综合所学来搭建的屏上独立内循环系统 ,自恋点说的话各 ...