加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:36:41 所属栏目:PHP教程 来源:网络整理
导读:《迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版》要点: 本文介绍了迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版,希望对您有用。如果有疑问,可以联系我们。 PHP学习 迪菲-赫尔曼(DiffieCHellman)是一个可以让双方在不平安的公

《迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版》要点:
本文介绍了迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版,希望对您有用。如果有疑问,可以联系我们。

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

PHP进修迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版

如上原理,最后很容易通过数学原理证明(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进修
<?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,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

《迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版》是否对您有启发,欢迎查看更多与《迪菲-赫尔曼密钥交换(DiffieCHellman)算法原理和PHP实现版》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读