Elgamal演算法 簡單C語言演算法實現

2021-09-27 08:41:07 字數 1256 閱讀 3073

目錄

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語言的簡單演算法 氣泡排序

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。氣泡排序就是把小的元素往前調或者把...