HDU1211 RSA 基础

题意:给你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;
}



你可能感兴趣的:(HDU1211 RSA 基础)