poj2447 RSA公钥加密破译
来源:互联网 发布:毒品网络 百度云 编辑:程序博客网 时间:2024/06/06 13:13
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define MAXN 10
#define C 16381
long long min;
long long multi(long long a, long long b, long long n){
long long tmp = a % n, s = 0;
while(b){
if(b & 1) s = (s + tmp) % n;
tmp = (tmp + tmp) % n;
b >>= 1;
}
return s;
}
long long Pow(long long a, long long b, long long n){
long long tmp = a % n, s = 1;
while(b){
if(b & 1) s = multi(s, tmp, n);
tmp = multi(tmp, tmp, n);
b >>= 1;
}
return s;
}
int witness(long long a, long long n){
long long u = n - 1, t = 0, i, x, y;
while(!(u & 1)) u>>= 1, t ++;
x = Pow(a, u, n);
for(i = 1; i <= t; i ++){
y = multi(x, x, n);
if(y == 1 && x != 1&& x != n -1) return 1;
x = y;
}
if(x != 1) return 1;
return 0;
}
int test(long long n){
long long a;
int i;
if(n == 2) return 1;
if(n < 2 || !(n & 1)) return0;
srand((long long)time(0));
for(i = 0; i < MAXN; i ++){
a = ((long long) rand()) % (n - 2) + 2;
if(witness(a, n)) return 0;
}
return 1;
}
long long gcd(long long a, long long b){
return b ? gcd(b, a % b) : a;
}
long long pollard_rho(long long n, long long c){
long long x, y, d, i = 1, k = 2;
srand((long long)time(0));
x = ((long long) rand()) % (n - 1) + 1;
y = x;
while(1){
i ++;
x = (multi(x, x, n) + c) % n;
d = gcd(y - x + n, n);
if(d != 1 && d != n) returnd;
if(y == x) return n;
if(i == k) y = x, k <<= 1;
}
}
void find(long long n, long long c){
long long r;
if(n <= 1) return;
if(test(n)){
if(min > n) min = n;
return;
}
r = pollard_rho(n, c--);
find(r, c);
find(n / r, c);
}
int main(){
int t;
long long i, s, n;
scanf("%d", &t);
while(t --){
scanf("%lld", &n);
if(test(n)){
printf("Prime\n");
continue;
}
min = n;
find(n, C);
printf("%lld\n", min);
}
return 0;
}
- poj2447 RSA公钥加密破译
- POJ2447 RSA【公匙密码】
- [POJ2447] RSA
- RSA公钥加密
- RSA公钥加密
- java RSA加密解密
- andriod RSA公钥加密
- Android RSA公钥加密
- javascript RSA公钥加密
- iOS RSA 公钥加密
- 公钥加密-私钥解密(RSA)
- Android RSA 公钥加密、解密
- RSA私钥加密研究
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- BP神经网络参数设置及实例
- 衡阳八中 1856 数论 C(n,m) % p
- fzu 1493 小步大步攻击算法
- hdu2815扩展小步大步攻击
- poj1006 中国剩余定理
- poj2447 RSA公钥加密破译
- 2011年03月21日的日记
- activemq-jms --zhuanzai
- poj2406 KMP算法
- poj1961 KMP
- AC自动机(确定性有限状态自动机)
- 2011年04月06日
- HTML5之Web Worker
- 2011年04月06日的日记