``言語はc言語です
コード
int gcd(long f,long e){
long r=1;
while(r!=0){
r=f%e;
f=e;
e=r;
}
return f;
}
int main(void){
long x;
long y;
long x1 = 1;
long x2 = 0;
long x3;
long y1 = 0;
long y2 = 1;
long y3;
long e;
long f;
long result1 = e;
long result2 = f;
long result3;
long t;
long hirabun;
long p;
long q;
long flag=0;
long i;
long n;
long d;
printf("平文となる数字を入力してください:");
scanf("%ld",&hirabun);
printf("pを入力してください:");
scanf("%ld",&p);
printf("qを入力してください:");
scanf("%ld",&q);
for( i=2;i<p;++i ) {
if( p%i==0 ) {
flag = 1;
break;
}
}
if( flag==0 )
printf("%ld は素数です。\n",p);
else
printf("%ld は素数ではありません。\n",p);
// return 0;
for( i=2;i<q;++i ) {
if( q%i==0 ) {
flag = 1;
break;
}
}
if( flag==0 )
printf("%ld は素数です。\n",q);
else
printf("%ld は素数ではありません。\n",q);
n=pq;
f=(p-1)(q-1);
printf("gcd(f,e)=1となるeを入力してください:");
scanf ("%ld",&e);
if(gcd(f,e)==1)
printf("gcd(f,e)=1です\n");
else
printf("違います");
while(1){
t = result1 / result2;
x3 = x1 - (tx2);
y3 = y1 - (ty2);
result3 = result1 - t*result2;
if(result3==1){
if(y3<0){
return y3+e;
}
return y3;
}
x1 = x2;
y1 = y2;
result1 = result2;
x2 = x3;
y2 = y3;
result2 = result3;
}
return 0;
printf("秘密指数dは%ldです\n",x1);
}
この場合秘密指数はz2が0のときのx1でいいですよね? また質問内容以外でおかしなところがあったらご指摘お願いします。
回答1件
あなたの回答
tips
プレビュー