【实验目的】
1、理解非对称密码算法的工作原理
2、了解ELGamal算法的密钥对生成、加密、解密过程,掌握其工作原理
3、验证ELGamal算法产生公钥和私钥的方法
4、验证ELGamal的加密、解密过程
【实验环境】
windows虚拟机
在目录C:\Program Files\Microsoft Visual Studio\MyProjects\ELGamal下打开ELGamal.dsw,在VC6.0环境下编译代码。
【实验预备知识点】
ELGamal算法在加密时依赖于四个参数,即公钥、私钥、依赖于公钥的本原元素和一个随机数的输入,其后的计算过程在实现上并无难度,解密时则只需输入公钥和私钥即可实现解密。
- 程序主流程图
2.程序调用层次图
3.程序调用关系图
【实验内容】
【实验步骤】
//ELGamal.c
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
void encryption();
void decrypt();
int cal(int a ,int b ,int c);
int main(){
int i;
while(1){
printf("\n\n*********ElGamal加解密算法**********");
printf("\n请选择:1.加密 2.解密 3.退出\n");
scanf("%d",&i);
switch(i){
case 1: encryption(); break;
case 2: decrypt(); break;
case 3: exit