关于python实现dh密钥交换的信息

本文目录一览:

验证DH密钥交换算法

我自己写了个DH秘钥的demo代码, 以前加密用过AES的加密,全套代码写下来太费时间又没技术含量。

如果你需要AES的加密代码可以留个邮箱给我。

public class Test1 {

public static final int P=30;//公开的大家都知道的

public static final int G=9;//公开的大家都知道的

public static void main(String[] args) {

A x = new A();

int one = x.getV();

//分割 A 代表A这边的系统加密  one 代表是给别人的值

B y = new B();

int two = y.getV();

//B 代表另外一边加密 two 代表是给别人的值

System.out.println(x.getKey(two));

System.out.println(y.getKey(one));

}

}

class A{

private int a;//自己的私有密值,不会告诉任何人

public A() {

 Random r = new Random(200);

a=r.nextInt();

}

public int getV(){

return (Test1.G^a)%Test1.P;

}

public int getKey(int v){

return (v^a)%Test1.P;

}

}

class B{

private int b;//自己的私有密值,不会告诉任何人

public B() {

Random r = new Random(200);

b=r.nextInt();

}

public int getV(){

return (Test1.G^b)%Test1.P;

}

public int getKey(int v){

return (v^b)%Test1.P;

}

}

DH 迪菲-赫尔曼密钥交换

迪菲-赫尔曼密钥交换 (英语:Diffie–Hellman key exchange,缩写为 DH ) 是一种密钥交换协议(不是加密算法),双方使用DH确定对称密钥后,要使用加密算法实现加密和解密。

前向保密 (英语:Forward Secrecy, FS ),指的是如果长期使用的密钥泄漏了,不会导致过去的会话被解密。比如你的一对公钥/私钥泄漏了,过去的会话就可以被解密出来。

g一般是2或者5,p是一个质数。一般来讲 服务端 持有g与p,g与p一般放在xxx.dh文件中

如何生成dh文件

2048代表p是一个2048位的大数,可以指定:

(g a mod p ) b mod p 等价于 g ab mod p

(g b mod p ) a mod p 等价于 g ba mod p

所以服务端与客户端计算得到的密钥是相同的。

redis应用DH配置实践

如何改进DH算法,使其抵御中间人攻击

改进DH算法使其抵御中间人攻击的方法是:在途中根据需要修改它们的密文,使得A和B都不知道他们在和C共享通信。

DH算法的缺点是没有提供双方身份的任何信息.。它是计算密集性的,因此容易遭受阻塞性攻击,即对手请求大量的密钥。受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作.,没办法防止重演攻击。

容易遭受中间人的攻击,第三方C在和A通信时扮演B;和B通信时扮演A.A和B都与C协商了一个密钥,然后C就可以监听和传递通信量。

扩展资料:

基于原根的定义及性质,可以定义Diffie-Hellman密钥交换算法.该算法描述如下:

1、有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根。

2、假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XAq),并计算公开密钥YA=a^XA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地用户B选择一个私有的随机数XBq,并计算公开密钥YB=a^XB mod q。B对XB的值保密存放而使YB能被A公开获得。

3、用户A产生共享秘密密钥的计算方式是K = (YB)^XA mod q.同样,用户B产生共享秘密密钥的计算是K = (YA)^XB mod q.这两个计算产生相同的结果:

K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q  = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相当于双方已经交换了一个相同的秘密密钥。

参考资料来源:百度百科-Diffie-Hellman

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/303521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-31 11:50
下一篇 2024-12-31 11:50

相关推荐

  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29

发表回复

登录后才能评论