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 规范化,规范 ...
随机推荐
- 报错test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件
问题描述: ubuntu18.04安装opencv4.5.1+contrib 报错test_features2d.cpp:51:10: fatal error: features2d/test/tes ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- JMeter JSR223 Sampler 教程:性能测试的魔法棒
JMeter JSR223 Sampler 教程:性能测试的魔法棒 宝子们,今天咱要深入探索 JMeter 里超厉害的 JSR223 Sampler,它就像是一把万能钥匙,能打开性能测试的各种奇妙大门 ...
- HashMap源码解析-JDK18
引言 HashMap在JDK1.8和1.7中差异较大,在JDK1.8中HashMap引入了红黑树,优化减少了哈希冲突,提高了哈希表的存取效率. 本篇文章分析的就是JDK1.8中的HashMap源码. ...
- BOF编写-修改时间戳
模板配置 跟着网上的教程使用evilashz师傅的模板,下载模板解压至vs的模板目录: %UserProfile%\Documents\Visual Studio 2022\Templates\Pro ...
- Solution Set -「LOCAL」冲刺省选 Round VII
\(\mathscr{Summary}\) 三道结论题,毁灭吧. A 题一开始思路偏了,发现答案最高 bit 能固定之后接下来的结论就顺理成章了. B 题哈哈哈哈又是经典:我结论猜对了,然 ...
- MYSQL-收集
1.MySQL敏感数据进行加密的几种方法小结 AES_ENCRYPT和AES_DECRYPT函数 AES(Advanced Encryption Standard)是一种对称加密算法.在MySQL中, ...
- 前端面试100-copy
1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势. 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5.未来三到五年的规划是怎样 ...
- 微服务实战系列(一)-注册中心Springcloud Eureka服务端-copy
1. 场景描述 springcloud提供了一整套可行的构建分布式系统的方案,使的企业/开发人员能够快速沟通分布式系统,今天快速构建下springcloud的注册中心Eureka. 2. 解决方案 2 ...
- biancheng-JSTL标签库
JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签.JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面.JSTL 包含 5 ...