URAL 1141. RSA Attack RSA加密演算法
意甲冠军:给你e n c 并有m^e = c(mod n) 求 m
思路:首先学习RSA算法 here
过程大致是
1.发送的信息是m
2.随机选择两个质数 p和q, n = q*p, n的欧拉函数值φ(n)= (p-1)*(q-1)这个须要证明
3.选择一个与φ(n)互质的而且小于φ(n)的数e, 计算c = m^e(mod n)
4.发送c
5解密 求e的逆元d 逆元就是2个数乘一下在mod一个数等于1 这里就是e*d = 1(mod φ(n))
求逆元用扩展欧几里德或者直接求高速幂
6.计算c^d(mod n) 就是m
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; //返回a^p mod n 高速幂
int pow_mod(int a, int p, int n)
{
int ans = 1;
while(p)
{
if(p&1)
{
ans *= a;
ans %= n;
}
a *= a;
a %= n;
p >>= 1;
}
return ans;
}
bool prime(int x)
{
for(int i = 2; i*i <= x; i++)
{
if(x%i == 0)
return false;
}
return true;
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int e, n, c;
scanf("%d %d %d", &e, &n, &c);
int p, q;
for(int i = 2; i*i <= n; i++)
{
if(n%i == 0 && prime(i) && prime(n/i))
{
p = i;
q = n/i;
break;
}
} int x = (p-1)*(q-1), y = x;
for(int i = 2; i*i <= n; i++)
{
if(x % i == 0)
{
y = y / i * (i-1);
while(x % i == 0)
x /= i;
}
}
if(x > 1)
y = y / x * (x-1);
int inv = pow_mod(e, y-1, (p-1)*(q-1));
printf("%d\n", pow_mod(c, inv, n));
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
URAL 1141. RSA Attack RSA加密演算法的更多相关文章
- 1141. RSA Attack(RSA)
1141 越来越喜欢数论了 很有意思 先看个RSA的介绍 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. RSA的算法涉及三个参数,n ...
- 【Android工具】DES终结者加密时报——AES加密演算法
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...
- Linux Kernel(Android) 加密算法汇总(四)-应用程序调用OpenSSL加密演算法
Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口 讲到了怎样调用内核中的接口的方法. 本节主要是介绍怎样Android C/C++应用程序调用Openssl ...
- ****ural 1141. RSA Attack(RSA加密,扩展欧几里得算法)
1141. RSA Attack Time limit: 1.0 secondMemory limit: 64 MB The RSA problem is the following: given a ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- 非对称加密RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。使用最广泛的是RSA算法
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey).公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私 ...
- RSA加密解密算法
/** * RSA加密解密算法 * Class Rsa */ class Rsa { /** * 获取pem格式的公钥 * @param $public_key 公钥文件路径或者字符串 * @retu ...
- RSA非对称性前端加密后端解密
前端加密代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结
(1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...
随机推荐
- LeetCode18:4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- SQL Server :理解IAM 页
原文:SQL Server :理解IAM 页 在以前的文章里,我们讨论了数据页,GAM和SGAM,还有PFS页.今天我们一起来讨论下索引分配映射(Index Allocation Map:IAM)页. ...
- 关于产品的一些思考——腾讯之QQ音乐
--------------------2014.5.11-------------------- 原来一直使用小米手机自带的音乐播放器,除了搜歌下载不方便,其它的还好(省电是最大的长处),用过Jin ...
- CSS 初探
Css: 指层叠样式表 (Cascading Style Sheets),它是用来进行网页风格设计的.通俗的说就是进行网页美化的,没有html依然存在,多了css 它会更好.但是没有html,css就 ...
- Windows IOT
Windows IOT 开发入门(准备工作) 终于抽出空来了,将最近研究的东西记录下来,物联网,万物皆可联网.然后可以做到智能家居,智能生活,智能城市....一大堆.吹牛的就不说了. 在实际应用中 ...
- 学派Delphi方法(推荐)——————————【Badboy】
Delphi是一个新的可视化编程环境, 提供了一种方便.快捷的Windows使用顺序开发工具. 它使用了MicrosoftWindows图形用户界面的很多先进特性和设计思想. 本文就给读者引见学Del ...
- LeetCode204:Count Primes
Description: Count the number of prime numbers less than a non-negative number, n. 比计算少n中素数的个数. 素数又称 ...
- java 注解 学习
周末闲来无事,想要研究一下注解方面的知识,曾经看过几次,都忘记了,这次学习下,而且写篇文章记录下, 1.元注解 元注解是指注解的注解.包含 @Retention @Target @Document ...
- new TimerTask(robot)(转)
import java.awt.Dimension; import java.awt.Robot; import java.awt.Toolkit; import java.io.PrintStrea ...
- linux 脚本測试网络速度
example: ./netspeed eth0 1 #!/bin/bash 2 3 INTERVAL="1" # update interval in seconds ...