Elgamal算法实现
目录
1.基本算法
快速幂算法 pow_mod(a,b,p)
计算a^b mod p
2.具体算法
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为私钥
3.代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int pow_mod(int a,int b,int p){
int ans=1;
int tmp=a%p;
while(b){
if(b&1)
ans=ans*tmp%p;
b>>=1;
tmp=tmp*tmp%p;
}
ret