DH算法python实现
2022/3/9 14:14:41
本文主要是介绍DH算法python实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
DH算法是非对称密钥算法,这个算法只能用于密钥的交换,不能用于密钥的加解密;它能够在双方不传递私钥的情况下,获得一个共享密钥,且第三方就算截取数据包,也很难破解出共享密钥,这涉及离散对数问题,请读者自行百度。
代码如下:
# 初始化数据 p = 19 a = 2 XA = 5 XB = 7 # 该函数是用来求模的,函数功能是a的x次方对p求模,因为当x很大的时候 # 可能会造成内存溢出问题,所以每次选取一个步长step,求a的step次方对p求模,所有的step总和等于x def calcu_model(a, x, p, step): y = 1 while(x>0): # 当x < step时候,说明已经到了最后一次循环过程了,所有要在此处将step修改为剩余值 if x < step: temp = pow(a, x, p) y = y * temp y = y % p break y = y * pow(a, step, p) y = y % p x = x - step return y def calcu_dh(p, a, XA, XB, step): """ :param p: p是一个素数,一般而言P很大 :param a: a是一个任意数 :param XA: XA是A的私钥 :param XB: XB是B的私钥 :param step: 一个步长,任意int值,避免内存溢出 :return: 返回一个元组,格式是(A的公开密钥,B的公开密钥,A和B的共享密钥) """ YA = calcu_model(a, XA, p, step) YB = calcu_model(a, XB, p, step) print("A用户的公开密钥为:{0}".format(YA)) print("B用户的公开密钥为:{0}".format(YB)) KA = calcu_model(YB, XA, p, step) KB = calcu_model(YA, XB, p, step) if KA == KB: print("共享密钥为{0}".format(KA)) return (YA, YB, KA) calcu_dh(p, a, XA, XB, 2)
这篇关于DH算法python实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门