2018 CCPC-final K - Mr. Panda and Kakin(RSA解密) 和 第十届蓝桥省赛C++A组填空题 RSA解密(非暴力解法)

2019年蓝桥杯-RSA解密 解题步骤: 本题把数论中比较基本的几个知识点都考查到了, 暴力法质因数分解、扩展欧几里得法求乘法逆元、快速乘+快速幂求解答案。答案为:x = 579706994112328949 解题完整代码如下: #include <bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define _for(i,a,b) for(int i=(a);i<(b);i++) #define ll long long using n. 阅读详情

https://codeforc.es/gym/102055/problem/K

K - Mr. Panda and Kakin

题意

给出 n , c n, c n,c, n = p ∗ q n = p*q n=p∗q, p p p和 q q q是x附近相邻的两个质数, c = f 2 30 + 3   m o d   n c = f^{2^{30}+3} \ mod\ n c=f230+3 mod n。求出 f f f的值。

题解

RSA解密,令 e = 2 30 + 3 e = {2^{30}+3} e=230+3。令 r = ( p − 1 ) ( q − 1 ) r = (p-1)(q-1) r=(p−1)(q−1)
d ∗ e   m o d   r ≡ 1 d*e\ mod \ r \equiv 1 d∗e mod r≡1
c = f e   m o d   n c = f^e \ mod\ n c=fe mod n
f = c d   m o d   n f = c^d \ mod \ n f=cd mod n
可以暴力在sqrt(n)附近寻找p,q,因为两个素数差距不会很大。
已知e和r,可以解同余方程
e x + r y = 1 ex+ry=1 ex+ry=1
得出d的值。
即可以算出f的值。
此题需要用O(1)快速乘才能通过。

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)

typedef long long ll;
typedef pair<int,int> pii;

inline void add(ll &a,ll b,ll c){a+=b;if(a>=c)a-=c;}
#define ld long double
inline ll mul(ll a,ll b,ll c){return (a*b-(ll)((ld)a*b/c)*c+c)%c;}
ll exgcd(ll a, ll b, ll& x, ll &y) {
	if(b == 0) {
		x = 1; y = 0;
		return a;
	}
	ll d = exgcd(b,a%b,y,x);
	y -= a/b*x;
	return d;
}
inline ll pw(ll x, ll n, ll mod) {
	ll ret = 1;
	while(n) {
		if(n&1) ret = mul(ret,x,mod);
		x = mul(x,x,mod);
		n >>= 1;
	}
	return ret;
}
int main() {
	int T;
	scanf("%d", &T);
	int ca = 0;
	ll a,b,x,y;
	a = (1<<30)+3;
	while(T--) {
		ll n,c;
		scanf("%lld%lld", &n, &c);
		ll p = sqrt(n);
		while(n%p != 0) p--;
		ll q = n/p;
		ll r = (p-1)*(q-1);
		b = r;
		exgcd(a,b,x,y);
		x = ((x%b)+b)%b;// 保证是正数
		ll f = pw(c,x,n);
		printf("Case %d: %lld\n",++ca,f);
	}
	return 0;
}

蓝桥省赛 RSA解密

在这里插入图片描述

题解

d ∗ e   m o d   r ≡ 1 d*e\ mod \ r \equiv 1 d∗e mod r≡1
本题的d正好与r互质,所以可以算出d的逆元。
e   m o d   r ≡ d − 1 e\ mod \ r \equiv d^{-1} e mod r≡d−1
对
X = C e   m o d   n X=C^e\ mod \ n X=Ce mod n
进行欧拉降幂
X = C e   m o d   r   m o d   n X=C^{e\ mod \ r} \ mod \ n X=Ce mod r mod n
替换指数。
X = C d − 1   m o d   n X=C^{d^{-1}} \ mod \ n X=Cd−1 mod n

即可在2ms之内求出X。需要注意,由于r不是素数,所以不能直接用费马小定理的快速幂求。可以采用扩展欧几里得求d的逆元

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

#define ld long double
inline ll mul(ll a,ll b,ll c){return (a*b-(ll)((ld)a*b/c)*c+c)%c;}

ll pw(ll x, ll n, ll c) {
	ll ret = 1;
	while(n) {
		if(n&1) ret = mul(ret,x,c);
		x = mul(x,x,c);
		n >>= 1;
	}
	return ret;
}
ll exgcd(ll a, ll b, ll& x, ll& y) {
	if(b == 0) {
		x = 1; y = 0;
		return a;
	} 
	ll d = exgcd(b,a%b,y,x);
	y -= a/b*x;
	return d;
}
ll inv(ll a, ll n) {
	ll x,y;
	ll d = exgcd(a,n,x,y);
	return d == 1 ? (x+n)%n:-1;
}
int main() {
	clock_t start,end;
	start = clock();
	ll n = 1001733993063167141;
	ll d = 212353;
	ll C = 20190324;
	ll p = sqrt(n);
	while(n%p != 0) {
		p--;
	}
	ll q = n/p;
	// cout << p << " "<< q<<endl;
	ll phi = (p-1)*(q-1);
	// cout << "gcd:" <<__gcd(phi,d) << endl;
	ll invd = inv(d,phi);
	// cout << invd << endl;
	ll X = pw(C,invd,n);
	cout << X << endl;
	end = clock();
	cout<<(double)(end-start)/CLOCKS_PER_SEC*1000<<"ms"<<endl;	
	return 0;
}
RSA(第十届蓝桥杯省赛C++A组E题) 解题报告 Apare_xzc RSA(第十届蓝桥杯省赛C++A组E题) 解题报告 xzc 2019/4/4 (边看World Final B站直播边写的) 题面:(开始码字)   RSA是一种经典的加密算法。它的基本加密过程如下。   首先生成两个大质数p,q, 令n = p*q,设d与(p-1)*(q-1)互质,则可以找到e,使得d*e除以(p-1)*(q-1)的余数为1   n,d,e组成了私钥,n,d构成了公钥。   ... 阅读详情

相关推荐

2019 蓝桥杯第十届大赛个人赛省赛(软件类)真题 A组 C++

2019 蓝桥杯第十届大赛个人赛省赛(软件类)真题 A组 C++ 平方和 数列求值 最大降雨量 迷宫 RSA 解密 完全二叉树的权值 外卖店优先级 修改数组 糖果 组合数问题

Gym102055 (CCPC-final 2018)

2018CCPC-FINAL

tarjen的博客 263

CIFAR-100模型性能对比:Top1与Top5错误率深度解析

本文深度解析了CIFAR-100数据集上Top1与Top5错误率的核心意义与差异。通过对比MobileNet、ResNet、DenseNet等主流模型的性能数据,揭示了模型架构、训练策略及数据集特性如何共同影响这两个关键指标,并为不同应用场景下的模型选择提供了实战指南。

weixin_28224217的博客 339

第十届蓝桥杯之试题E:RSA解密☆☆☆☆☆

第十届蓝桥杯

qq_44579321的博客 718

Windows安全中心空白问题修复:服务重置与系统组件修复实战指南

Windows系统服务是操作系统后台运行的核心组件,负责管理硬件资源、应用程序执行和系统功能。其稳定运行依赖于服务控制管理器、注册表配置和系统文件完整性。当关键服务(如Windows Update、安全中心服务)因更新失败、权限错误或组件损坏而无法正常启动时,依赖其功能的应用程序界面便会出现加载异常。在系统维护与故障排除领域,通过命令行工具重置服务状态、修复系统映像已成为工程师的必备技能。本文聚焦Windows安全中心界面空白这一典型故障,深入剖析其与Windows Update服务、组件存储损坏的关联,并

weixin_30859423的博客 423

SpringBoot+Flowable 6.8.0实战:5分钟搞定免登录流程图设计器

本文详细介绍了如何通过SpringBoot与Flowable 6.8.0深度整合,快速实现免登录流程图设计器的集成方案。通过排除默认安全配置、自定义安全策略和用户模拟服务,开发者可在5分钟内完成设计器的部署,适用于快速原型开发和企业内部工具搭建。

weixin_29204205的博客 278

2019年第十届蓝桥杯省赛C++A组【第五题:RSA 解密】

第五题 试题 E: RSA 解密 本题总分:15 分 问题描述 RSA是一种经典的加密算法。它的基本加密过程如下。 首先生成两个大质数p,q, 令n = p*q,设d与(p-1)*(q-1)互质,则可以找到e,使得d*e除以(p-1)*(q-1)的余数为1   n,d,e组成了私钥,n,d构成了公钥。   当使用公钥加密一个整数X时(X<=n-1),计算C = X^d mod n,则C是加密后的密文。   当收到密文C时,可以使用私钥解开,计算公式为:X = C^e mod n。   例如:

jianjianjianjian01的博客 1381

大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”

原标题:BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”BIM研究的先驱、佐治亚理工教授Charles (Chuck) M. Eastman于本周一(11月9日)在其Atlanta家中逝世。特转韩国Yonsei大学Ghang Lee教授的讣文以作纪念。过世原因未说明。BIM的出现是与当今时代科技的发展分不开的。在信息时代建筑发展面临的挑战巨大:建筑物越建越高...

weixin_39941262的博客 3302

快速幂,蓝桥杯2019A组第五题RSA解密

互质数为数学中的一种概念,即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数,叫做互质数 思路:现在的要求是解密,所以按照公式,现在还差e,那么要求e就需要求p,q,根据公式(d*e)%(p-1)(q-1)=1可以知道p,q。 **注意,因为p,q是两个质数,所以他们的公因数只有1,所以n【n=p*q】只有这2个因子,没有别的因子了,所以就可以用暴力法,所以方法是: 循环i从2~根号n,若n%i==0,则证明i该i是p或q,n/i则是另一个数,就找到了p和q了!! ** #inclu

weixin_49865619的博客 473

Educoder:爬虫实战——求是网周刊文章爬取

第1关:获取新闻url importrequests importre defgeturls(): #**********Begin**********# url='http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm' headers={ 'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Buil...

weixin_46026136的博客 5253

【工程师一次性讲明白系列】什么是电压驻波比 (VSWR)

电压驻波比(VSWR)是电信号传输过程中非常重要的指标,控制VSWR的大小可以提高信号传输效率和系统稳定性。通过优化阻抗匹配,可以有效地减少反射信号,提升通信质量!🚀📡。

weixin_43199439的博客 1298

蓝桥杯 — — RSA解密

的值非常大,我们需要用到快速幂的方法,又因为快速幂中存在乘法运算,极易导致内存溢出的现象(在很大的数的情况下),因此我们需要在快速幂的基础上使用快速乘的方法进行运算(在计算机中,计算加法的速度往往比计算乘法的速度要快),并且数值都要使用。,这就变为了求解一个二元一次方程组,对于二元一次方程组,要想求出两个未知量,我们至少需要直到两个等式关系,但是这里我们只知道了一组等式关系,因此无法使用常规的思想进行求解。的求解,我们可以使用枚举的思想,利用给出的公式。,再利用上面得到的规律,可以递归的求解出。

SoyMilk的博客 1442

uniapp - 热更新提示:WGT安装包中manifest.json文件不存在 | unexpected EOF!报错详细解决,完美搞定WGT安装包中WWW目录下manifest.json不存在问题

uniapp,安卓android,苹果ios,热更新,热更新code:-1202报错,,WGT热更新报错,uniapp热更新wgt出现报错manifest.json文件不存,uniapp安卓苹果软件热更新时出现错误unexpected EOF!如何解决,怎么解决热更新wgt报错,app新版本下载安装报错WGT安装包中manifest.json文件不存在,WGT安装包中WWW目录下manifest.json不存在,uniapp热更新报错安装失败[-1201]:WGT/WGTU文件格式错误,uniapp-wgt

✅ 精选推荐文章 1万+

2017CCPC final K bfs打表 llu

#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5000; ll n,m; ll dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}}; ll vis[1000][1000]; ll ans...

qq_40423146的博客 199

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[蓝桥杯2019初赛]RSA解密 (数论入门)

题目: 思路: 这题主要是数论知识 想明白了不难,但是要懂扩展欧几里得算法、快速幂、快速乘的知识 首先关于X有两条式子(mod 代表 % 意思) C=Xd mod n (第一条应该是求不出来的) X=Ce mod n 那我们肯定尽量要把e求出来这样才可以算出X来 那怎么求e? 我们可以看到题目描述中阐述 d × e mod (p-1) (q-1) =1 d是已知量, p、q为质数,n=p × q 那么通过枚举就可以把 p,q求出来 那么之后的问题就来了 知道 d,p,q如何求e? 我们可以先设一个数为x,

m0_53807008的博客 1012

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

第十届蓝桥杯: RSA 解密

Begin 记录一下自己的学习过程啦~~ 上题目 试题 E: RSA 解密 【问题描述】 RSA 是一种经典的加密算法。它的基本加密过程如下。 首先生成两个质数 p, q,令 n = p · q,设 d 与 (p − 1) · (q − 1) 互质,则可 找到 e 使得 d · e 除 (p − 1) · (q − 1) 的余数为 1。 n, d, e 组成了私钥,n, d 组成了公钥。 当使用公钥加密一个整数 X 时(小于 n),计算 C = Xd mod n,则 C 是加 密后的密文。 当收到密.

m0_51638853的博客 1818

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

(CCPC-Final 2018)K - Mr. Panda and Kakin

题意:x是\([1e5,1e9]\)的随机数,p是小于x的最大素数,q是大于等于x的最小素数,\(n=pq\),\(c=f^{2^{30}+3}\mod{n}\),给n和c求f 题解:rsa解密,首先在\(sqrt(n)\)附近找到p和q,让\(r=(p-1)*(q-1)\),\(e=2^{30}+3\),\(d*e\mod{r}=1\),\(c^d\mod{n}=f\) 证明:\(c=f^e%n...

weixin_30813225的博客 550

2018CCPC网络赛2018年8月25日

吐槽一下网管中心,爬山去了没人看守?当这个比赛是啥?虽说是周末也不该这样子吧 本次比赛主要负责看题,人有点难过也做不出题系列( 按照签到顺序写题解 第一道费马大定理裸题 n&amp;amp;gt;2无解 思路:n这么大暴算肯定不行呀,只有构造了~ 构造思路队友想的很巧妙 #include &amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; int main(){ ...

CODER的博客 975

2019第十届蓝桥杯 省赛A组 RSA解密

大二下学期选修了密码学,学了公钥密码,刚好碰到这个题,就写个博客记录一下 RSA算法介绍: 两个大素数p,q (保密的,选定的) n=p*q (n是公开的) Φ(n)=(p−1)(q−1) (即,欧拉函数:小于n且与n互素的数的个数) e满足gcd(Φ(n),e)=1; (1<e<Φ(n)) ,就是e与Φ(n)互质。 d*e≡1(mod Φ(n)),即d和e...

weixin_43107805的博客 3081

2018 CCPCfinal 感悟

第一次参加正式赛,其实心态还算稳,但是还是没有逃脱打铁的命运 首先说说第一天的热身赛 热身赛四道题,a了三道,签到题+数学期望+dfs。数学题A的过程比较曲折,由于样例给的很良心,其实也提供了一些思路,然后在这个过程中讨论了一下,后来改变了从前向后变为从后往前推的思路,过来全部样例就A了,所以说样例良心来着。dfs完全是队友搜索写得好。 然后说第二天正式赛 正式赛A题签到题,在队友敲的时候...

zm_zsy的博客 1069

第十届蓝桥杯 省赛A组 E RSA 解密

这个题应该是填空题中最难的一个了。 思路很简单,但是你需要一点python的基础 讲一下本题的思路。 首先我们要对公钥中的n进行质因子分解,得到p,q。然后根据 d * e %((p - 1) * (q - 1) == 1和扩展欧几里得 求出e。 RSA是一种不可逆的加密方法,不可逆的原因是公钥特别大,对它分解质因子时间上会很长,普通计算机大概是 10年左右,量子计算机一星期就可以...

唐宋元明清的博客 4523

第十届蓝桥杯 A组 RSA解密

这次蓝桥杯对于acm学数学的太友好了 emmm 然而还是菜啊 我和填空最后一题死磕了一个小时 (太蠢了)没有Python写Java大数写到自闭 题目大意: n=p*q p,q为素数 d与(p-1)*(q-1)互素 (d*e)%((p-1)*(q-1))=1 c=x^d%n x=c^e%n 给定d,c,n 求x 素数筛可以求出p,q 用欧几里得验证是否满足互素条件,快速幂直接乘会...

yangdelu855的博客 3716

2019蓝桥 RSA 解密

#include<bits/stdc++.h> #define ll long long using namespace std; inline ll ksc(ll x,ll y,ll mod) { return (x*y-(ll)((long double)x/mod*y)*mod+mod)%mod; } ll fast_pow(ll x, ll k...

mlm5678的博客 1306

2018 ccpc final:B. Balance of the Force (枚举)

题目大意:有n个骑士,每个骑士可以加入光阵营或暗阵营,并且获得一个力量,分别为L和D,现在有m对骑士不能在同一个阵营,问力量差值(最大值和最小值的差值)最小是多少?如果不存在阵营满足仇恨骑士不在同一个阵营内,则输出IMPOSSIBLE。 解法:首先二分图判定一下是否存在奇环,若存在奇环则输出IMPOSSIBLE。 按仇恨关系建边形成的图,注意到一个连通分量只要一个人选定加入哪个阵营,其他人的阵营也...

qq_41997978的博客 756

2019蓝桥杯省赛(软件类A组) RSA

#include <bits/stdc++.h> using namespace std; long long n=1001733993063167141; long long d=212353; long long c=20190324; long long p=891234941; long long q=1123984201; long long e=82381609393152...

ftx456789的博客 1222
上一篇: 【2019 南昌邀请赛 Match Stick Game】 火柴dp
下一篇: 【2019湘潭邀请赛C】HDU 6534 Chika and Friendly Pairs(莫队)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值