ElGamal密码算法
#1.构造全局变量:选一素数p,模p的原根g,随机选取x,且x和g都小于p,计算y=g的x次方(mod p) #2.加密算法:将明文信息M表示成为{0到p-1}里的数,再随机选取随机数k,计算c1=g的x次方(mod p) #c2=M*y的k次方(mod p) #3.解密算法:计算M=c1的-x次方*c2(mod p) import math p=int(input("请输入素数p:")) t=0 for i in range(2,int(math.sqrt(p))+1):if p % i == 0:print(p,"不是素数")t+=1break if t != 1:print("素数p的原根有")for j in range(1, p):for i in range(1, ((p - 1) // 2) + 1):if pow(j, i) % p == p - 1 and i != (p - 1) / 2:breakelse:if pow(j, i) % p == p - 1 and i == (p - 1) / 2:print(j) g=int(input("请输入素数p的原根g:")) x=int(input("请输入私钥(x<p):")) print("保密x") y=pow(g,x)%p print("私有密钥为({},{},{})".format(p,g,x)) print("公开密钥为({},{},{})".format(p,g,y)) M=int(input("请输入明文信息:")) k=int(input("请随机选取整数:")) C1=pow(g,k)%p C2=(M*pow(y,k))%p print("将密文({},{})发送".format(C1,C2)) n=pow(C1,x)%p def gcd(a, b):while a != 0:a, b = b % a, areturn b def findModReverse(n, p): # 这个扩展欧几里得算法求模逆if gcd(n, p) != 1:return Noneu1, u2, u3 = 1, 0, nv1, v2, v3 = 0, 1, pwhile v3 != 0:q = u3 // v3v1, v2, v3, u1, u2, u3 = (u1 - q * v1), (u2 - q * v2), (u3 - q * v3), v1, v2, v3return u1 % p s=findModReverse(n,p) print(s) m=s*C2%p print("解密得到的明文信息为",m)
ElGamal密码算法相关推荐
- 密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录 SM1 对称密码 SM2 椭圆曲线公钥密码算法 SM3 杂凑算法 SM4 对称算法 同态加密 密态计算和隐私计算 安全多方计算技术 安全多方计算的应用场景 对称加密算法 非对称加密算法(公钥 ...
- 密码学:c/c 语言实现 pdf,典型密码算法C语言实现pdf
典型密码算法C语言实现 内容简介 <典型密码算法C语言实现>详细讲述了一些典型密码算法的算法原理及C语言实现.书中密码算法包括:序列密码.分组密码.公钥密码和Hash算法,其中序列密码有祖 ...
- 商用密码应用与安全性评估要点笔记(密码发展、密码算法)
1.3 密码发展 词条 内容 创新的动力 信息系统的应用需求和攻击威胁 发展三个阶段 古典密码.机械密码.现代密码 古典密码 代换密码,采用一个代换表将一段明文变换成一段密文.若代换表只有一个,是单表 ...
- 密码学(一)—— 背景、常用的密码算法简介,单向散列简介、数字签名简介
背景 密码,最初的目的就是用于对信息的加密,计算机领域的密码技术种类繁多,但随着密码学的运用,密码还用于身份认证,防止否认等功能上.最基本的,是信息加密解密分为对称加密和非对称加密,这两者的区别在于是 ...
- ElGamal公钥密码算法及ElGamal数字签名方案实现
ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性.它至今仍是一个安全性良好的公钥密码算法.它既可用于加密又可用于数字签名的公钥密码体 ...
- 密码算法的概念及常用算法整理
最近实在太忙,很早就整理好的东西,但是一直抽不出时间发,今天准备连续发三篇最近对密码这块内容的整理,我也是密码学的初学者,解释不到的地方欢迎指点,谢谢!接下来开始学习密码算法吧! 1.密码算法概念介绍 ...
- SM4密码算法(附源码)
from:http://blog.csdn.net/mao0514/article/details/52930944 SM4是我们自己国家的一个分组密码算法,是国家密码管理局于2012年发布的.网址戳 ...
- python如何调用文件进行换位加密_python 换位密码算法的实例详解
python 换位密码算法的实例详解 一前言: 换位密码基本原理:先把明文按照固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密.例如,字符串"Error should neve ...
- JavaScript实现希尔密码 算法(附完 整源码)
JavaScript实现希尔密码 算法 Matrix.js完整源代码 hillCipher.js完整源代码 hillCipher.test.js完整源代码 Matrix.js完整源代码 export ...
最新文章
- shell [] [[ ]] {}区别
- android动画的实现原理,Android动画的实现原理 .
- 计算机操作系统课设总结,计算机操作系统课程设计
- [HNOI2018]游戏[拓扑排序]
- DLL/OCX文件的注册与数据执行保护DEP
- Android版添加phonegap---为APP添加CNZZ统计插件教程
- 下载丨2020 PG亚洲大会(PPT汇总)
- 利用SpringCloud搭建一个最简单的微服务框架
- CentOS自动打开网络连接
- Java面试题:2021大厂最全Java面试资料
- Redhat 5.4 安装vsftp
- 绘制神经网络工具汇总(重要)
- 什么是NVMe?一篇文章理清它的前生今世
- unity算法面试_Unity面试准备
- 黑盒测试设计测试用例的方法【修改】
- QT 字符乱码的原因
- rdkit 化学反应ReactionFromSmarts
- 游戏美术和策划,你感兴趣吗
- ubuntu基础命令总结
- opencv实现眼动检测【胡子哥哥】