添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

DH密钥交换算法因为不能验证数据的来源,所以不能抵御中间人击.

如果需要安全强度更高的非对称加密算法,可以采用Ecc椭圆曲线加密算法或者使用广泛的RSA加密算法.

不对称加密算法主要用于在公共网络安全的数据传输.

不对称加密算法关键部分在于大整数数学函数库的使用.

C/C++实现的DH算法动态链接库,需要64位的可以自己手动编译.

github地址:   https://github.com/gesneriana/DiffieHellman

在C#中调用C/C++ DH算法的示例 github地址:

https://github.com/gesneriana/DHTest

至于在Java以及Android 中怎么调用可以参考我的另一篇blog,另一篇blog介绍的是Ecc加密算法.附上blog地址:

http://blog.csdn.net/qq_20202715/article/details/52129810

顺便提一下,本人找工作,会的技术有C#,Java,ASP.NET,Java EE,Android,WinForm,C/C++,Sql Server,Oracle,Mysql,JSON,Java Script,Html,Css,Ajax,JNA,XML,Http,TCP/UDP,IIS,多线程,也使用过一些百度地图API之类的. 目前在杭州西湖区,为何投了那么多简历都无人看,自认为我的 技术也不算是很差.学习能力也还可以.如果需要我可以去自学C/C++的FFMpeg音视频编解码开源框架等技术.并且可以适配多种平台.如果需要也可以适配移动平台.

DH密钥交换算法因为不能验证数据的来源,所以不能抵御中间人击.如果需要安全强度更高的非对称加密算法,可以采用Ecc椭圆曲线加密算法或者使用广泛的RSA加密算法.      不对称加密算法主要用于在公共网络安全的数据传输.     不对称加密算法关键部分在于大整数数学函数库的使用.     C/C++实现的DH算法动态链接库,需要64位的可以自己手动编译.     git
因为最开始的代码是一个int存储一bit数据,后面修改代码结构,使用一个char存储8比特数据时,偷了一下懒,用了先前的查找表直接生成了char数据,理论上对实验结果没有影响。 代码结构说明: 1.用visual studio2022社区版编译,直接点击.sln文件即可 2.头文件 2.1 头文件中Bit_Format_查找变参考-----即为一个int存储一个比特数据, 2.2 头文件des.h包含所有函数即用到的全局变量,其中查找表存储在uint64_t变量中(ip_char,e_char等) 3.源文件 3.1 Array.cpp/base_fun_quick.cpp即为DES基本 算法 所用到的S/P/E盒等矩阵数组,和int到char转换/各个部件的基础 实现 函数 3.2 D_E_Quick.cpp即为快速 实现 的加 模块,其中核心部分为轮函数for循环,加 速度提升也集中在这里,这里是直接调用了生成的查找表进行加 3.3 Find_Table.cpp即为查找表的生成,数据存储在全局变量中用于3.2中的调用 3.4 sub_key.cpp就是子 生成函数,有详细注释不多说了
Diffie-Hellman 算法 是第一个公开 算法 ,早在 1976 年就发现了。其安全性源于在有限域上计算离散对数,比计算指数更为困难。该 算法 可以使两个用户之间安全地 交换 一个 ,但不能用于加 或解 信息。 该 算法 是一种建立 的方法,并非加 方法,但其产生的 可用于加 管理或任何其它的加 方式,这种 交换 技术的目的在于使两个用户间能安全地 交换 (KEY)以便用于今后的报文加 。该 算法 需要公开两个参数:质数 n 和其原根 g,同时通信双方 A 和 B 随机选择自己的私 x 和 y,通过 交换 g
(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&
1、Diffie-Hellman 算法 简介 Diffie-Hellman 算法 (以下简称为:DH 算法 ),是最早的 交换 算法 之一,它使得通信的双方能在非安全的信道中安全的 交换 ,用于加 后续的通信消息。 起基本流程原理如下: 假定小明和小红期望在一个不安全的网络中协商一个共同的 ,那么进行如下步骤: 两人先说好大素数(质数)p和它的原始根g。 小明随机产生一个数a,并计算A = p^a mod g, 发送给小红。 小红随机产生一个数b,并计算......
DH 交换 算法 是一种基于离散对数问题的公 码体制,其核心思想是:双方通过 交换 公共信息来生成一个共享的 ,该 只有双方知道,达到了保 通信的目的。下面是C语言 实现 DH 交换 算法 的代码示例: #include <stdio.h> #include <stdlib.h> #include <math.h> // 定义素数p和底数g #define p 23 #define g 5 // 计算a^b mod p int mod_exp(int a, int b, int p) { int res = 1; while (b > 0) { if (b & 1) { res = (res * a) % p; a = (a * a) % p; b >>= 1; return res; int main() { int alice_secret, bob_secret; // 双方的私有 int alice_public, bob_public; // 双方的公共 int shared_secret_alice, shared_secret_bob; // 双方的共享 // 双方选择各自的私有 alice_secret = 6; // 可以随机生成 bob_secret = 15; // 可以随机生成 // 计算双方的公共 alice_public = mod_exp(g, alice_secret, p); bob_public = mod_exp(g, bob_secret, p); // 双方 交换 公共 shared_secret_alice = mod_exp(bob_public, alice_secret, p); shared_secret_bob = mod_exp(alice_public, bob_secret, p); // 检查共享 是否相同 if (shared_secret_alice == shared_secret_bob) { printf("共享 为:%d\n", shared_secret_alice); } else { printf(" 交换 失败!\n"); return 0; 以上代码中,我们选择了一个素数p和一个底数g,双方各自选择一个私有 ,然后计算出自己的公共 ,并 交换 公共 ,最后通过计算得到共享 。 需要注意的是,在实际应用中,需要使用更大的素数p和更复杂的计算方法来确保安全性。
Star_Li_92: 您好,请问在C#中调用C/C++ DH算法的示例 github地址失效了,您可以给出修改的地址吗?谢谢您 想请教您一下,DH加密算法的具体实现有C++源码吗? 我的QQ:1006382773,如果您方便,希望可以向您进行请教,非常感谢您的分享 Android Studio 通过JNA调用 Clang编译的so库,以及Java JNA 调用x64dll,C# dllimport调用x86dll zhanyd: 楼主这么吊居然找不到工作?没道理啊,在个城市啊? Android Studio 通过JNA调用 Clang编译的so库,以及Java JNA 调用x64dll,C# dllimport调用x86dll 一睡六七年 木槿竹风: 这么多人看完之后都没说有问题, 是你自己经验太少了 我已经写得够详细了 就差录视频给你看了 有问题 扣扣 小窗我 Android Studio 通过JNA调用 Clang编译的so库,以及Java JNA 调用x64dll,C# dllimport调用x86dll 一睡六七年 木槿竹风: 有问题直接问我. android的项目我是用android studio的