µÏ·Æ£­ºÕ¶ûÂüÃÜÔ¿½»»»(Diffie¨CHellman)Ëã·¨Ô­ÀíºÍPHPʵÏÖ°æ

5年以前  |  阅读数:216 次  |  编程语言:PHP 

µÏÆ£­ºÕ¶uÂu(Diffie¨CHellman)ÊÇÒ»¸o¿ÉÒÔÈÃË«½ÔÚ²»°²È«µÄ¹«¹²ÐŵÀÉϽ¨Á¢ÃØÔ¿µÄÒ»ÖÖËa¨£¬Ë«½ºoÆھͿÉÒÔÀuÓÃÕa¸oÃØÔ¿¼ÓÃÜ(ÈçRC4)ÄÚÈÝ¡£
µÏÆ£­ºÕ¶uÂu(Diffie¨CHellman)Ëa¨Ô­ÀiºÜ¼oµ¥£º

ÈçÉÏÔ­Ài£¬×iºoºÜÈÝÒ×ͨ¹ýÊýѧԭÀiÖ¤Ã÷(g^b%p)^a%p = (g^a%p)^b%p£¬Òo´ËËuÃǵõ½Ò»¸oÏaͬµÄÃÜÔ¿¡£
ÉÏÃae³ýÁËa,bºÍ×iºoµÃ³oµÄ¹«¹²ÃÜÔ¿ÊÇÃØÃܵģ¬ÆaËu¶¼ÊÇ¿ÉÒÔÔÚ¹«¹²ÐŵÀÉÏ´«µÝ¡£Êµ¼ÊÔËÓÃÖÐpºÜ´o(300λÒÔÉÏ)£¬gͨ³£È¡2»o5¡£ÄÇô¼¸ºo²»¿ÉÄÜ´Óp,gºÍg^a%pËa³oa(ÀeÉ¢ÊýѧÎÊÌa)¡£

ºÜ¶aÓiÑÔ¶¼¶Ô¸ÃËa*¨×oÁËʵÏÖ£¬ÒÔ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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例