C++ 验证DH算法

网络信息安全作业二:编程实现DH算法的密钥交换流程

1.说明

运行环境:vs2010

开发语言:c++

2.DH算法原理的简单说明

A和B双方进行通信

选取素数p和整数a,a为p的原根,a,p公开。

(1)A:选取XA

(2)B:选取XB

(3)A,B交换YA、YB,XA,XB保密

(4)A:k=YB^a mod p;

         B:k=YA^a mod p;

3.源代码

(由于主要的目的是验证DH算法,及说明DH算法的密钥交换流程,为简化编程,故将p=19,a=3)

#include
#include  
#include  
#include 
using namespace std;
class DH
{
private:
	int p;  //素数p
	int a;  //p的原根a
	int X;  //私钥
	long int k;  //共享密钥
public:
	int Y1;  //自己公钥
	double Y2;  //对方公钥
	DH() { p=19;  a=3;  X=0; k=0; Y1=0; Y2=0;}
	void Generate_Prik()  //生成私钥
	{
		X=1+rand()%p;
	}
	void Generate_Pubk()  //生成公钥
	{
		double a1=a*1.0;
		Y1=pow(a1,X);
		Y1=Y1%p;
	}
	void Exchange_PubK(double Y)  //交换公钥
	{
		Y2=Y;
	}
	void Generate_ShareKey()  //生成共享密钥
	{
		k=pow(Y2,X);
		k=k%p;
	}
	//打印一下参数,说明DH算法交换密钥的过程
	void Print_X()  //打印私钥
	{
		cout<
4.运行结果截图

C++ 验证DH算法_第1张图片




你可能感兴趣的:(C++ 验证DH算法)