(1)选择公共数p,a;
(2) 用户Alice选择一个秘密数Xa,并将自己的公钥Ya = (a^Xa) mod p发送给用户Bob;
(3) 用户Bob选择一个秘密数Xb,并将自己的公钥Yb = (a^Xb)mod p发送给用户Alice;
(4) Alice计算 共享密钥Ka = (Yb^Xa) mod p;
(5) Bob计算 共享密钥Kb =(Ya^Xb) mod p;
(6) 此时Ka =Kb;
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int mod(int x,int y,int z){
int s =pow(x,y);
return(s%z);
int main(){
int a,p,Xa,Xb;
cout <<"请输入生成元:"; cin >>a;
cout <<"请输入模数: "; cin >>p;
cout <<"Alice输入自己的秘密数Xa:"; cin >>Xa;
cout <<"Bob输入自己的秘密数Xb:"; cin >> Xb;
int Ya = mod(a,Xa,p);
int Yb = mod(a,Xb,p);
cout <<"Alice的公钥为:"<<Ya<<endl;
cout <<"Bob的公钥为:"<<Yb<<endl;
int Ka =mod(Yb,Xa,p);
int Kb =mod(Ya,Xb,p);
cout <<"Alice和Bob两人之间的共享密钥为Ka:"<<Ka<<" 或者Kb:"<<kb<<endl;
system("pause");
return 0;
Diffie-Hellman密钥交换的原理(1) 选择公共数p,a;(2) 用户Alice选择一个秘密数Xa,并将自己的公钥Ya = (a^Xa) mod p发送给用户Bob(3) 用户Bob选择一个秘密数Xb,并将自己的公钥Yb = (a^Xb)mod p发送给用户Alice(4) Alice计算 共享密钥Ka = (Yb^Xa) mod p(5) Bob计算 共享密钥Kb =(Ya^Xb) mod p(6) 此时 Ka =Kb程序实现#include<iostream&
c语言编写的
DH算法,借鉴学习
A系统构建
密钥:构建一对公私
密钥Private Key1和Public Key1;
A系统向B系统公布自己的公钥(Public Key1);
B系统使用A公布的公钥(Public Key1)建立一对
密钥:Private Key2和Public Key2;
B系统向A系统公布自己的公钥Public Key2;
A系统使用自己的私钥Private Key1和B系统的公钥Public Key2构建本地
密钥;
B系统使用自己的私钥Private Key2和A系统的公钥Public Key1构建本地
密钥;
Diffie-Hellman-Merkle 密钥交换演示
Diffie Hellman Merkle (DH) 密钥交换是建立传输层安全性 (TLS) 连接的关键组件。 在 DH 密钥交换结束时,两方将就用于加密和解密数据的对称密钥达成一致。
在实现 TLS 时,理解密钥交换概念很重要。 该存储库包含正在积极开发的材料,用于在面对面的谈话或研讨会的背景下演示 DH 密钥交换。 该演示的目标是表明可以安全地就密钥达成一致,同时通过不安全的渠道传达细节,同时避免用令人困惑的方程式和算法分散观众的注意力。 该演示面向 Web 开发人员受众,其中包括具有不同数学和计算机科学背景的个人。
此存储库中的材料和说明将解释用于教授 DH 密钥交换的有效演示。
要开始演示,请要求两名志愿者参与活动。 指定一名参与者为“Alice”,另一名参与者为“Bob”。
给 Alice 一份“Alice”讲
Diffie-Hellman算法是第一个公开密钥算法,早在 1976 年就发现了。其安全性源于在有限域上计算离散对数,比计算指数更为困难。该算法可以使两个用户之间安全地交换一个密钥,但不能用于加密或解密信息。
该算法是一种建立密钥的方法,并非加密方法,但其产生的密钥可用于加密、密钥管理或任何其它的加密方式,这种密钥交换技术的目的在于使两个用户间能安全地交换密钥(KEY)以便用于今后的报文加密。该算法需要公开两个参数:质数 n 和其原根 g,同时通信双方 A 和 B 随机选择自己的私钥 x 和 y,通过交换g
DH密钥交换算法因为不能验证数据的来源,所以不能抵御中间人击.
如果需要安全强度更高的非对称加密算法,可以采用Ecc椭圆曲线加密算法或者使用广泛的RSA加密算法.
不对称加密算法主要用于在公共网络安全的数据传输.
不对称加密算法关键部分在于大整数数学函数库的使用.
C/
C++实现的
DH算法动态链接库,需要64位的可以自己手动编译.
1、Diffie-Hellman算法简介
Diffie-Hellman算法(以下简称为:DH算法),是最早的密钥交换算法之一,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息。
起基本流程原理如下:
假定小明和小红期望在一个不安全的网络中协商一个共同的密钥,那么进行如下步骤:
两人先说好大素数(质数)p和它的原始根g。
小明随机产生一个数a,并计算A = p^a mod g, 发送给小红。
小红随机产生一个数b,并计算......
Diffie-Hellman密钥交换是一种公开密钥加密算法,用于在不安全的通信渠道上交换密钥。它是由惠特菲尔德·迪菲和马丁·赫尔曼·赫尔曼于1976年共同发明的。
Diffie-Hellman密钥交换算法基于离散对数问题,假设存在一个质数p和一个整数g,使得g是模p的原根。通信双方Alice和Bob分别选择一个私有密钥a和b,然后计算出公开的值A和B。然后,Alice和Bob分别使用对方的公开值和自己的私有密钥计算出一个共享的密钥K。这个共享的密钥K可以用于对后续通信进行加密。
Diffie-Hellman密钥交换算法的优点是,它使用了公开密钥和私有密钥,避免了传统的密钥交换算法中需要通过一个安全的渠道交换密钥的问题。同时,它也避免了使用相同的密钥对所有通信进行加密的问题。