写出ELGamal公钥密码算法的加密、解密过程
来源:互联网 发布:那种牌子的网络电视好 编辑:程序博客网 时间:2024/05/29 13:25
1、写出ELGamal公钥密码算法的加密、解密过程
2、假设p=2579,a=2,d=765,试用ElGamal公钥算法对明文m=1299进行加密(选取的随机整数k=853),并用解密算法验证其结果的正确性。
程序:#include<iostream>using namespace std;int modmi(int x,int r,int n){ int a=x,b=r,c=1; while(b!=0){ if(b%2==0){ b=b>>1; a=(a*a)%n; } else{ b=b-1; c=(c*a)%n; } } return c;}void gcd1(int a,int b,int &a1){ a1=1; int n1=a;int n2=b;int a2=0;int b2=1;int b1=0; int q,r,t; q=n1/n2; r=n1-q*n2; while(r!=0){ q=n1/n2; r=n1-q*n2; n1=n2; n2=r; t=a2; a2=a1-q*a2; a1=t; t=b2; b2=b1-q*b2; b1=t; } a1=(a1+5*b)%b;}int main(){ int m,p,a,d,k,m1; int c1,c2,c,b,c11; cout<<"请输入明文m:"; cin>>m; cout<<"请输入素数p:"; cin>>p; cout<<"请输入素数a:"; cin>>a; cout<<"请输入随机整数d:"; cin>>d; cout<<"请输入秘密随机整数k:"; cin>>k; c1=modmi(a,k,p); b=modmi(a,d,p); c2=(m%p*modmi(b,k,p))%p; cout<<"c=("<<c1<<","<<c2<<")"<<endl; gcd1(modmi(c1,d,p),p,c11); m1=(c2*c11)%p; cout<<"验证得明文为:"<<m1<<endl; return 0;}
运行结果:
0 0
- 写出ELGamal公钥密码算法的加密、解密过程
- 加密解密---------->ElGamal算法
- ElGamal的数据加密
- [JAVA加解密]RSA算法、ElGamal算法
- ElGamal公钥密码和椭圆曲线密码体制
- 各种密码体制加密解密的算法函数总结
- C# 密码的加密, 解密
- C# 密码的加密, 解密
- 密码的加密与解密
- C#字符串的加密与解密(DES和TripleDES算法的加密解密过程)
- 密码学复习笔记4【公钥密码技术、RSA 、ElGamal】
- FlashFXP密码java加密解密算法
- 通过密码 加密解密算法,java
- 我的公钥: DSA and Elgamal
- Elgamal算法的java实现
- 谁能帮我解密这个字串啊des加密的-密码忘了(我已写好解密算法)
- 加密的存储过程解密
- https的加密解密过程
- Linux字符设备注册与注销
- SAR成像基础知识急救箱(零)关于傅里叶变换的几个小困惑
- [剑指offer]跳台阶&变态跳台
- java jsp实现网站访问量的统计
- Exercise(5):最大子矩阵
- 写出ELGamal公钥密码算法的加密、解密过程
- HDU 5671 Matrix
- Java 连接SQLServer 2012
- shape标签总结
- 1009
- SpringMVC
- 泰勒级数
- Android:Click,LongClick,Touch,KeyDown,KeyUp事件使用心得
- windows上安装RabbitMQ