密码学——ElGamal算法实现
一,EIGamald 的密钥生成
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8e0418c5caa624ee6d31e87ac0cff83e.png)
要求:大素数的形式为p=2q+1形式的强素数,这里面q也是素数,要求p为150位的大素数,大素数p和本原根自己生成。
强素数使得其p-1只有四个因子:1,2,q,p-1;从而使本原元的判断变的简单,只需要验证2和q即可。
二,EIGamald 的加密过程
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0c930117c45d95209788b0f22795be59.png)
三,EIGamald 的解密过程
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/28c76381f8682f4669d2c3d18a4ef179.png)
具体代码如下:
#include"miracl.h"
#include"mirdef.h"
#include<stdio.h>
#define ZERO mirvar(0)
#de