Pollard‘s p-1算法

概述

光滑数 (Smooth number):指可以分解为多个小素数乘积的正整数

当p是N 的因数,并且p−1是光滑数,可以考虑使用Pollard's p-1算法来分解N

当p是N的因数,并且p+1是光滑数,可以考虑使用Williams's p+1算法来分解N

 这里只介绍pollard p-1算法

算法核心

假设存在素数p,p是合数n的因子,p-1可以被分解成多个小素数k1,k2,k3......kn<B(其中B是我们选取的一个上界)

p-1=k1*k2*k3...*kn

那么存在  p-1 | B!

由费马小定理可知:

                                                        m^(p-1) \equiv 1 mod p   

因为p-1 | B!所以

                                                        m^(B!) \equiv 1 mod p

所以

                                                        m^(B!) - 1= k*p

而我们的目的就是求出p

于是乎

                                                        p=gcd(m^(B!)-1,n)

 代码实现:这里m取最简单的值:2

#脚本1
def Pollard(B, n):a = pow(2, math.factorial(B), n)return math.gcd(a-1, n)

math.factorial(B)是求B的阶乘

a = pow(2, math.factorial(B), n) 这里模n可以减小数值,加快计算,否则脚本执行会很慢很慢

#脚本2
m = 2
i = 2
while True:a = pow(m, i, n)p = gmpy2.gcd(a-1, n)if p != 1 and p != n:q = n // pprint("p=",p)print("q=",q)breaki += 1

这里没用上界B,而是不断用m乘i,构成阶乘,从而找到上界

案例

2024_newstar_crypto

from Crypto.Util.number import *
from random import choice
from enc import flagm = bytes_to_long(flag)
def get_primes(limit):primes = []is_prime = [True] * (limit + 1)for num in range(2, limit + 1):if is_prime[num]:primes.append(num)for multiple in range(num * num, limit + 1, num):is_prime[multiple] = Falsereturn primesdef get_Prime(bits):while True:n = 2while n.bit_length() < bits:n *= choice(primes)if isPrime(n + 1):return n + 1e = 65537
primes = get_primes(e)
p = get_Prime(512)
q = get_Prime(512)
n = p*q
c = pow(m,e,n)
print(f"n = {n}")
print(f"e = {e}")
print(f"c = {c}")
'''
n = 11039465757321779749699115271175512667139900174718736810369447320076323722255434292310358024561522508796910115450323496447022239437773990981536427837406218598107069494432101729405702532145398564394815485237091250665627736733029998539907483103936019387506766847901269370907583069348340970264589547521878184740704877
e = 65537
c = 999985242089285281573358992862050772171553905758195933815934618530062196165616033686130348967500088738894025554769544651219372069639483611911419044407380282591769389311004388591587725946534597210624224229109408954620531714696257219047380587652138116530227788392134058889161962899416080258311278619324733722515967
'''

这里的光滑数是p+1,但本质都是一样的

脚本代码

from Crypto.Util.number import *
from random import choice
from sympy import factorint
import math
import gmpy2n = 11039465757321779749699115271175512667139900174718736810369447320076323722255434292310358024561522508796910115450323496447022239437773990981536427837406218598107069494432101729405702532145398564394815485237091250665627736733029998539907483103936019387506766847901269370907583069348340970264589547521878184740704877
e = 65537
c = 999985242089285281573358992862050772171553905758195933815934618530062196165616033686130348967500088738894025554769544651219372069639483611911419044407380282591769389311004388591587725946534597210624224229109408954620531714696257219047380587652138116530227788392134058889161962899416080258311278619324733722515967def Pollard(B, n):a = pow(2, math.factorial(B),n)return math.gcd(a-1, n)
p=Pollard(e,n)
q=n//p
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)flag=pow(c,d,n)
print(long_to_bytes(flag))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455473.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员节-回顾篇

回顾&#xff1a; 时间如白驹过隙&#xff0c;转眼间&#xff0c;我们又走过了一个充满挑战与机遇的年份。回顾过去的一年&#xff0c;心中充满了感慨与收获。 一、个人成长 这一年里&#xff0c;我在各个方面都有了显著的成长。在工作上&#xff0c;我通过不断学习和实践&a…

【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)

目录 引言 工具介绍 环境介绍 测试结果 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈&#xff0c;为了保证通信的可靠性&#xff0c;客户端和服务端之间需要建立链接。服务端能并发处理多少个链接&#xff0c;平均每秒钟能处理…

国产蓝牙耳机哪个品牌值得买?百元国产蓝牙耳机品牌排行榜

一款优质的蓝牙耳机总能为我们带来更加便捷、舒适的听觉体验&#xff0c;而在众多蓝牙耳机品牌中&#xff0c;国产蓝牙耳机凭借其高性价比、丰富的功能和独特的设计&#xff0c;逐渐赢得了消费者的青睐&#xff0c;那么国产蓝牙耳机哪个品牌值得买&#xff1f;作为一个资深的蓝…

一、Linux 目录文件

一、目录结构 |-/ # 根节&#xff08;cd /&#xff09; |-/bin # 系统命令 |-/boot # 启动目录 |-/dev # 设备文件保存目录 |-/etc # 系统的所有配置文件|-profile # 环境变量配置文件&#xff08;修改后需source /etc/profile使配置文件立即生效&#xff09; |-/home # 普通用…

光储充微电网:策略调度带领能源新未来---安科瑞 吴雅芳

一、光储充微电网概述 光储充微电网是一种高度智能化的电力系统&#xff0c;在新能源领域占据着重要地位。它主要由光伏电站、储能系统、充电桩、微电网控制器等组成。 光伏电站是光储充微电网的核心部分之一&#xff0c;应选择稳定的组件和好的支架。在设计光伏发电系统时&a…

解锁文本数据可视化的无限可能:Wordcloud库全解析

文章目录 **&#x1f31f;解锁文本数据可视化的无限可能&#xff1a;Wordcloud库全解析&#x1f510;**1. **背景介绍**2. **Wordcloud库是什么&#xff1f;**3. **如何安装Wordcloud库&#xff1f;**4. **Wordcloud库的基本函数使用方法**5. **实际应用场景**6. **常见问题及解…

实操 maxkey对接三方文档

实操 maxkey 对接三方文档 概述前置准备&#xff1a;MaxKey 安装与配置&#xff1a;第三方系统准备网络环境 对接三方配置oauth2协议对接导入jar包&#xff08;调接口&#xff09;权限加回调重定向获取token处理业务 api对接三方获取api凭证配置 MaxKey更新代码 概述 最近在搞m…

hhdb数据库介绍

背景 随着互联网的崛起&#xff0c;海量数据的存储、计算、分析需求越来越普遍。在各种计算机应用场景中&#xff0c;传统集中式数据库面临着理论升级和技术升级两大难题。21世纪以来&#xff0c;随着以 Hadoop及其衍生技术为代表的大规模数据处理技术的崛起&#xff0c;数据库…

迁移学习|ResNet18

一、导入库 二、设置随机种子 三、数据增强和数据加载 四、加载预训练模型 五、定义损失函数和优化器 六、学习率调度器 七、训练模型 八、可视化训练过程 九、总结 1. 常见优化器概述 1.1 随机梯度下降&#xff08;SGD: Stochastic Gradient Descent&#xff09; 简介&…

SIP 业务举例之 三方通话:邀请第三方加入的信令流程

目录 1. 3-Way Conference - Third Party Is Added 简介 2. RFC5359 的 3-Way Conference - Third Party Is Added 信令流程 3. 3-Way Conference - Third Party Is Added 总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信)…

青少年编程能力等级测评CPA C++(三级)-试卷2

青少年编程能力等级测评CPA C&#xff08;三级&#xff09;-试卷2 一、单项选择题&#xff08;共15题&#xff0c;每题3分&#xff0c;共45分&#xff09; CP3_2_1&#xff0e;在宽度为500米的河道上&#xff0c;修建一个拦河大坝。施工队每天筑坝50米&#xff0c;由于当时条件…

Qt 实战(11)样式表 | 11.2、使用样式表

文章目录 一、使用样式表1、盒子模型2、应用样式表2.1、全局应用2.2、局部应用2.3、通过文件应用 3、使用样式表实现换肤 前言&#xff1a; 在Qt框架中&#xff0c;样式表&#xff08;Style Sheets&#xff09;是一种功能强大的工具&#xff0c;它允许开发者以一种简洁而高效的…

怎么把本地代码上传到阿里云里面

项目需求 将本地项目上传到阿里云&#xff0c;一般有两种情况 1.在本地创建的项目&#xff0c;没有关联过其他的git远程仓库。 2.从其他项目复制的项目代码&#xff0c;但是想要以此项目为基础重新创建一个新的项目。 解决方式 第一种 第一种项目很好解决&#xff0c;就按…

LeetCode题练习与总结:路径交叉--335

一、题目描述 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始&#xff0c;先向北移动 distance[0] 米&#xff0c;然后向西移动 distance[1] 米&#xff0c;向南移动 distance[2] 米&#xff0c;向东移动 distance[3] 米&#xff0c;持续移动。也就是说&#xf…

从安灯系统看汽车零部件工厂的智能制造转型

在当今快速发展的制造业领域&#xff0c;汽车零部件工厂正面临着日益激烈的市场竞争和不断提高的客户需求。为了在竞争中脱颖而出&#xff0c;实现可持续发展&#xff0c;许多汽车零部件工厂纷纷踏上智能制造转型之路。而安灯系统作为一种重要的生产管理工具&#xff0c;在这场…

Nginx可视化管理平台nginxWebUI(1)【保姆级部署方式】

目录 nginxWebUI简介 1.概述&#xff1a; 2.功能 NginxWebUI的部署方式 实验环境&#xff1a; 1.安装JDK环境、nginx和nginx程序 2.启动nginxWebUI 3.使用浏览器登录webUI 访问格式&#xff1a; 登陆成功后我们就来到了它的可视化管理页面 nginxWebUI简介 1.概述&am…

面试总结一

面试总结 1、自我介绍一下自己2.面试11、css常用布局有哪些2、css常用的属性3.js原型链4、开发中遇到的技术难点5、闭包6、ts了解什么呢7.git都用什么命令8、vue怎么打包9.vue启动一个项目需要什么10、vue怎么创建一个项目 2.面试21.vue2和vue3有什么区别2.复杂组件的封装&…

vue-element-admin顶部导航栏的修改

基于vue-element-admin的顶部一级导航栏的调整&#xff0c;因为一级路由过多导致其他元素被挤到第二行&#xff0c;故现在将原来一级路由数组拆分成两个数组&#xff0c;第二个数组以子菜单显示 关键处调整代码 html <el-menu:active-text-color"variables.menuActiv…

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发 在全球化的浪潮下&#xff0c;跨境电商成为越来越多企业拓展国际市场的重要途径。然而&#xff0c;语言障碍成为了一个不可忽视的问题。为了更好地服务全球用户&#xff0c;为自己的跨境网站添加多国语言…

199116-50-2,Mito-Tracker Orange CMTMRos是一种高亲和力的线粒体染色剂

一、基本信息 中文名称&#xff1a;线粒体橙色荧光探针 英文名称&#xff1a;Mito-Tracker Orange CMTMRos CAS号&#xff1a;199116-50-2 分子式&#xff1a;C24H24Cl2N2O 分子量&#xff1a;427.37 存储条件&#xff1a;避光、冷藏保存&#xff0c;避免长时间暴露于光线…