1.证明题
证明RSA加密解密互逆
证明如下
9.2RSA计算题
题目如下
9.3 求明文W
9.4 RSA中求e的逆元d
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
void find_prime(bool prime_num[],int size){//素筛法找出小于2881的所有素数
prime_num[0]=0;
prime_num[1]=0;
for(int i=2;i<=size;i++){
if(prime_num[i]==1){
for(int j=i+i;j<size;j+=i)prime_num[j]=0;
}
}
}
void find_pq(bool prime_num[],int &p,int &q,int size){//找出乘积为2881的素数
for(int i=0;i<size;i++){
if(prime_num[i]==1){
if((size%i==0)&&prime_num[size/i]){
p=i;
q=size/i;
}
}
}
}
int egcd(int a,int b){
int r0=1,r1=0;
int s0=0,s1=1;
int q,temp1,temp2,temp3;
while(b){
q=a/b;
temp1=a;
a=b;b=temp1%b;
temp2=r0;
r0=r1;r1=temp2-q*r1;
temp3=s0;
s0=s1;s1=temp3-q*s1;
}
while(r0<0)r0+=b;
return r0;
}
int main(){
int p,q;
int e=65;
bool prime_num[2881];
memset(prime_num,1,2881);
find_prime(prime_num,2881);
find_pq(prime_num,p,q,2881);
int Euler_n=(p-1)*(q-1);
int d=egcd(e,Euler_n);
cout<<d<<endl;
system("pause");
}
找到结果为 725