RSA密钥生成-已知p、q、e求私钥d的python脚本
题目:
在一次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脚本的更多相关文章
- RSA密钥生成与使用
RSA密钥生成与使用 openssl生成工具链接:http://pan.baidu.com/s/1c0v3UxE 密码:uv48 1. 打开openssl密钥生成软件打开 openssl 文件夹下的 ...
- openssl-0.9.8k_WIN32(RSA密钥生成工具
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha openssl-0.9.8k_WIN32(RSA密钥生成工具
- TZOJ 3209 后序遍历(已知中序前序求后序)
描述 在数据结构中,遍历是二叉树最重要的操作之一.所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问. 这里给出三种遍历算法. 1.中序遍历的递归算法定义: ...
- python应用-已知三角形的边长求他的面积和周长
""" 已知三角形的边长求他的面积和周长 Author:罗万财 Date:2017-3-3 """ import math a=float( ...
- 2019-8-31-C#-已知点和向量,求距离的点
title author date CreateTime categories C# 已知点和向量,求距离的点 lindexi 2019-08-31 16:55:58 +0800 2018-05-08 ...
- C语言:已知三角形三边长求面积
//已知三角形三边长求面积 #include <stdio.h> #include <math.h> int main() { float a,b,c,p,s; int x=0 ...
- RSA密钥生成、加密解密、签名验签
RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...
- windows上RSA密钥生成和使用
一,下载安装windows平台openssl密钥生成工具,执行安装目录bin下的"openssl.exe",执行后弹出命令窗口如下 运行 二,生成私钥 输入"genrsa ...
- poj1190,DFS/已知一个等式,求另一个最小值
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱. ...
- C# 已知点和向量,求距离的点
已知一个点 P 和向量 v ,求在这个点P按照向量 v 运行距离 d 的点 B . 已经知道了一个点 P 和他运动方向 v ,就可以通过这个求出距离点 P 为 d 的点 B. 首先把 v 规范化,规范 ...
随机推荐
- 鸿蒙OS高级技巧:打造个性化动态Swiper效果
前言 在鸿蒙OS的广阔天地中,开发者们有机会创造出令人惊叹的用户体验.最近,我着手设计一款具有独特滑动效果的Swiper组件,它在滑动时能够迅速进入视野,同时巧妙地将旧的cell隐藏到视线之外.本文将 ...
- Anaconda下载以前的旧版本
由于Anaconda新的版本,可能不太适合我们当前开发,我们需要下载历史版本. 可以尝试从两个地方下载:1.推荐从 "清华大学开源软件镜像站" 下载:https://mirrors ...
- 实时社群技术专题(一):支持百万人超级群聊,一文读懂社群产品Discord
本文由腾讯产品体验设计师volihuang分享,原题"千万级增长,实时社交产品Discord拆解",本文收录时有内容修订和大量排版优化. 1.引言 对于大多数人而言,对即时通讯IM ...
- Solution Set -“似一捧细泉的奔逃”
目录 0.「OurOJ #47912」优美的分配方案 1.「OurOJ #47927」海之女仆 2.「OurOJ #47950」中档题 3.「OurOJ #47933」坐标 4.「OurOJ #479 ...
- IoC究竟shift什么?——IoC的基础分析
IoC全称Inversion of Control,直译为控制反转.这是一种设计理念,并非技术. 在明白控制反转之前,应该知道"反转"反的是什么. 被反转的正转 我们从生活中的做饭 ...
- java-文件输入输出处理
--------------------------------------------------- 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的 ...
- Mac上安装mongoDB详细教程
Mac OSX 平台安装 MongoDB MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/download ...
- ctfshow--web4 include日志注入
这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...
- java重载-构造方法也存在重载-数据类型的提升
重载 1.一个类中不能声明多个相同的方法,属性. 2.上面的相同指的是方法名,参数列表相同.和返回值类型无关. 3.如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,在jav ...
- 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 等)报错,哪个报错执行哪个即可 执行上述两句就 ...