迪菲-赫尔曼密钥交换(Diffie–Hellman)算法原理和PHP实现版

所属分类: 网络编程 / PHP编程 阅读数: 1385
收藏 0 赞 0 分享

迪菲-赫尔曼(Diffie–Hellman)是一个可以让双方在不安全的公共信道上建立秘钥的一种算法,双方后期就可以利用这个秘钥加密(如RC4)内容。
迪菲-赫尔曼(Diffie–Hellman)算法原理很简单:

如上原理,最后很容易通过数学原理证明(g^b%p)^a%p = (g^a%p)^b%p,因此它们得到一个相同的密钥。
上面除了a,b和最后得出的公共密钥是秘密的,其它都是可以在公共信道上传递。实际运用中p很大(300位以上),g通常取2或5。那么几乎不可能从p,g和g^a%p算出a(离散数学问题)。

很多语言都对该算法做了实现,以PHP package中Crypt_DiffieHellman为例:

<?php
include 'DiffieHellman.php';
 
/*
 *   Alice: prime = 563
 *       generator = 5
 *       private key = 9
 *   Bob:  prime = 563
 *       generator = 5
 *       private key = 14
 */
 
$p = 563;
$g = 5;
$alice = new Crypt_DiffieHellman($p, $g, 9);
$alice_pubKey = $alice->generateKeys()->getPublicKey();
 
$bob = new Crypt_DiffieHellman($p, $g, 14);
$bob_pubKey = $bob->generateKeys()->getPublicKey();
 
$alice_computeKey = $alice->computeSecretKey($bob_pubKey)->getSharedSecretKey();
$bob_computeKey = $bob->computeSecretKey($alice_pubKey)->getSharedSecretKey();
 
echo "{$alice_pubKey}-{$bob_pubKey}-{$alice_computeKey}-{$bob_computeKey}"; //78-534-117-117

更多精彩内容其他人还在看

php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍

本篇文章是对php模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析php中const与define的应用区别

本篇文章是对php中const与define的使用区别进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析htaccess伪静态的规则

本篇文章是对htaccess伪静态的规则进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析php中static,const与define的使用区别

本篇文章是对php中static,const与define的使用区别进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

PHP实现多进程并行操作的详解(可做守护进程)

本篇文章是对PHP实现多进程并行操作进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析PHP实现多进程并行执行脚本

本篇文章是对PHP实现多进程并行执行脚本进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入解析yii权限分级式访问控制的实现(非RBAC法)

本篇文章是对yii权限分级式访问控制的实现方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

判断php数组是否为索引数组的实现方法

本篇文章是对判断php数组是否为索引数组的方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数

本篇文章是对使用PHP实现计算两个日期间隔的年、月、周、日数的方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入Memcache的Session数据的多服务器共享详解

本篇文章是对Memcache的Session数据的多服务器共享进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享
查看更多