一、实验目的

理解Diffie-Hellman算法的实现原理,编程实现Diffie-Hellman算法的程序,能够实现密钥协商的目的

二、实验原理

w.Diffie与M.Hellman在1976年提出一个称为Diffie——Hellman密钥交换的公钥密码算法。该算法能用来在两个用户之间安全地交换密钥材料,从而使双方得到一个共享的会话密钥,但该算法只能用于交换密钥,不能用于加/解密。

Diffie-Hellman密钥交换的安全性基于求解有限域上离散对数的困难性。首先,双方需要约定一个大素数 p 和它的一个本原根 g ,然后整个密钥交换的过程分两步完成:

(1)双方(记为A和B)分别挑选一个保密的随机整数Xa和Xb,并分别计算Ya=g^Xa mod p和Yb=g^Xb mod p,然后互相交换,即A将YA发送给B,B将YB发送给A。其中,YA和Yb分别相当于A和B的公开密钥(但却不能用于真正的消息加密)。

(2)A和B分别计算K=Yb^Xa mod p和K=Ya^Xb mod p,得到双方共享的密钥K。这是因为

Yb^Xa mod p=(g^Xb mod p)^Xa mod p=g^XaXb mod p

Ya^Xb mod p=(g^Xa mod p)^Xb modp=g^XaXb mod p

由于Xa和Xb是保密的,因此攻击者最多能够得到p、g、Ya和Yb如果攻击者希望得到K,那么至少计算出Xa和Xb中的一个,这意味着需要求解离散对数,这在计算上是不可行的。

三、代码实现

package czx.xupt.DH;import java.util.Scanner;/*** #Author:槐序二四* #Time:2020/1/7 22:48* #Motto:人间荒唐市侩 不如山中作怪												

信息安全密码学实验四:Diffie-Hellman密钥交换协议的设计与实现相关推荐

  1. 信息安全密码学实验一:古典密码算法的设计与实现

    古典密码算法的设计与实现 1.仿射密码 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是: C=Ek(m)=(k1m+k2)mod n D=(c-k2)mod n package cz ...

  2. Diffie Hellman密钥交换

    In short, the Diffie Hellman is a widely used technique for securely sending a symmetric encryption ...

  3. DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换及RSA(学习笔记)

    DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换(学习笔记),来自B站: [不懂数学没关系]DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换_哔哩哔哩_bilibili ...

  4. 计算机网络ieee802.3标准,计算机网络实验四IEEE 802.3协议分析和以太网

    <计算机网络实验四IEEE 802.3协议分析和以太网>由会员分享,可在线阅读,更多相关<计算机网络实验四IEEE 802.3协议分析和以太网(6页珍藏版)>请在人人文库网上搜 ...

  5. 实验四: IPv6路由选择协议配置

    一.实验目的 掌握IPv6路由选择协议的原理及配置方法,包括RIPng和OSPFv3. 二.实验内容 1.RIPng的配置: 2.OSPFv3的配置. 三 .实验步骤 1 RIPng 的配置 1.1 ...

  6. (密码学实验)两种基本古典密码设计与实现—C语言—随机全排列应用

    目录 一.实验目的 二.实验内容 三.实验过程 1.概要设计 (1)随机全排列生成程序 (2)程序逻辑图 2.详细设计 (1)密钥字法 (2)洗牌法 (3)公式法 (4)自设计随机16全排列 (5)生 ...

  7. 信息安全密码学实验三:密码学数学基础实验

    一. 实验目的 掌握密码学相关的数学基础知识,理解模幂.求逆等运算的过程,编程实现相关算法 二.实验原理 考虑模指数,即计算形如 x^c mod n 的函数,在RSA密码体制中,加密和解密运算都是模指 ...

  8. 信息安全密码学实验二:序列密码的设计与实现

    序列密码的设计与实现 一.实验目的 理解线性反馈移位寄存器的基本构造,编程实现一个简单的线性反馈移位寄存器并用输出序列对给定明文实施逐比特加密. 二.实验原理 给定前一状态的输出,将该输出的线性函数再 ...

  9. 计算机网络实验四:利用UDP协议实现点对点聊天

    文章目录 1. 简介 1.1 功能 1.2 技术 1.3 流程 2. 源码 2.1 客户端1 2.2 客户端2(与客户端1不同的只有端口号) 2.3 服务端 3. 运行 4. 注意 4.1 端口占用 ...

最新文章

  1. python基础语言与应用第五章_《Python基础教程》 读书笔记 第五章(下)循环语句...
  2. mysql元数据查询
  3. 【每周NLP论文推荐】 对话管理中的标志性论文介绍
  4. 处理外部信息(xml,html,js,shareObject)
  5. sql如何先排序再去重
  6. python把list转成字典_python中将list转为dict
  7. css选择器的应用的实验,HTMLCSS实验(3)---掌握CSS选择器的使用方法
  8. SU sunmo命令学习
  9. 机器视觉--入门小结
  10. Font Awesome图标字体
  11. DEVC++下载与环境配置,手把手教程
  12. 牛腩新闻发布系统(7)——总结
  13. 高斯消元法求解线性方程组
  14. pytorch错误——Torch not compiled with CUDA enabled
  15. ACM-ICPC 2018 北京赛区网络预赛 Tomb Raider(暴力)
  16. 阿里云的域名和ip绑定
  17. 微信小程序:wx.createInnerAudioContext的使用
  18. 【复杂网络学习笔记】1:基本知识和小世界网络初步建立
  19. 花生壳http更新协议
  20. PROTAC 技术靶向降解 BTK

热门文章

  1. 51单片机通过DHT11温度传感器读取温度(2)
  2. 汽车喇叭语音芯片,警报音效ic选型
  3. MySQL学习笔记(六)索引类别
  4. 微信小程序——手机号登录
  5. 《设计模式》(博客园精华集)
  6. 行高line-height,以及基线、顶线、中线和底线,还有内容区域、行内框和行框 by 豆豆猫的窝...
  7. centos7里xxx.jar解压和压缩
  8. css 心形动画 爱心动画
  9. 【小程序源码】视频壁纸支持多种分类短视频另外也有静态壁纸
  10. 微信支付退款 升级版 【码云gvp 】