/* rep09.c 2005.6.16 gcc rep09.c -o rep09 -lm */ #include #include #include #include"crypto050609.h" /* 暗号文 (u,v) を、公開鍵 p と秘密鍵 s を用いて復号する */ int ElGamaldecrypt(int u, int v, int p, int s) { return modmul(powermod(u,p-1-s,p),v,p); } main() { int p,g,t,s,u[128],v[128]; int n,i,y; FILE *f; f=fopen("ElGamal04.dat","r"); // データファイルのオープン fscanf(f,"%d",&p); // 法 p の読み込み fscanf(f,"%d",&g); // 原始根 g の読み込み fscanf(f,"%d",&t); // 公開鍵 t の読み込み fscanf(f,"%d",&s); // 秘密鍵 s の読み込み printf("法   p = %d\n",p); printf("原始根 g = %d\n",g); printf("公開鍵 t = %d\n",t); printf("秘密鍵 s = %d\n",s); printf("\n"); n=0; while(!feof(f)){ fscanf(f,"%d %d",u+n,v+n); // 一文字分の暗号文 (u[n],v[n]) の読み込み n++; } fclose(f); printf("暗号文 :\n"); for(i=0;i