目錄
elgamal演算法實現
1.基本演算法
2.具體演算法
3.**
4.結果:
快速冪演算法 pow_mod(a,b,p)
計算a^b mod p
elgamal加密演算法 elgamal_en(m,pub,p,g,c1,c2)
c1=g^k mod p
c2=m*(pub^k) mod p
其中k為任意整數,m為明文,pub為公鑰,p為大素數,g為生成元,c1,c2為密文
elgamal解密演算法 elgamal_de(c1,c2,pri,p,g)
m_=c2 * ((c1_ )^pri) mod p
其中m_為解密後的資料,p為大素數,g為生成元,c1_為c1模p的逆元,pri為私鑰
#include#include#includeint pow_mod(int a,int b,int p)
return ans%p;
}void elgamal_en(int m,int pub,int p,int g,int *c1,int *c2)
int elgamal_de(int c1,int c2,int pri,int p,int g)
int is_prime(int p)
return 1;
}void main()while(!is_prime(p));
printf("輸入使用者a的私鑰:");
int pri;
scanf("%d",&pri);
int pub;
pub=pow_mod(g,pri,p);
printf("使用者a的公鑰為:%d\n",pub);
printf("輸入明文(小於%d):",p);
int m;
scanf("%d",&m);
int c1,c2;
elgamal_en(m,pub,p,g,&c1,&c2);
printf("用公鑰加密後的密文為:c1=%d,c2=%d\n",c1,c2);
int m_=elgamal_de(c1,c2,pri,p,g);
printf("用私鑰解密後的明文為:%d\n",m_);
c 語言 算菜價
題目描述 媽媽每天都要出去買菜,但是回來後,兜裡的錢也懶得數一數,到底花了多少錢真是一筆糊塗帳。現在好了,作為好兒子 女兒 的你可以給她用程式算一下了,呵呵。輸入輸入含有一些資料組,每組資料報括菜種 不含空格的字串 數量w 計量單位不論,一律為double型數 和單價p double型數,表示人民幣...
C語言簡單演算法變形題(1)
本專欄將會涉及一系列簡單的演算法題及其變形題,並用c語言給出例程。不定期更新在專欄中 輸入乙個日期,判斷該日期是本年第幾天 include int days of month 12 前面有乙個 0 的目的是使得下標與月份對齊,不用再 1 intisleapyear int year if year ...
C語言的簡單演算法 氣泡排序
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。氣泡排序就是把小的元素往前調或者把...