题意:给你p,q,e,l(l,个m),求加密后的秘钥。。。。。
RSA算法 介绍
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
n=p*q;
fn=(p-1)*(q-1);
e*d=1 (mod fn);
加密信息m,加密后为c
m<n
m^e=c (mod n);
解密:发送信息为c;
cd ≡ m (mod n)
#include<cstdio> #include<stdlib.h> #include<string.h> #include<string> #include<map> #include<cmath> #include<iostream> #include <queue> #include <stack> #include<algorithm> #include<set> using namespace std; #define inf 2147483647 #define eps 1e-8 #define LL long long #define M 50005 #define mol 1000000007 int main() { __int64 p,q,e,l; while(~scanf("%I64d%I64d%I64d%I64d",&p,&q,&e,&l)) { __int64 fn,d,i,j,c,n; n=p*q; fn=(p-1)*(q-1); d=1; while(e*d%fn!=1) d++; __int64 temp; for(i=0;i<l;i++) { scanf("%I64d",&c); temp=1; for(j=1;j<=d;j++) { temp=(c*temp)%n; } printf("%c",temp); } printf("\n"); } return 0; }