HermanDiffie(Diffie—Hellman密钥交换)算法的原理和实现PHP版
迪菲-赫尔曼(Diffie—Hellman)算法的原理很简单:
如上所述,用数学原理很容易证明(G·G·P)一% p=(G=一% p)b p,因此它们得到相同的键。
除了A,B,最后的公钥是秘密的,所有其他的都可以在公共信道上传递,在实际应用中,p是大的(超过300位),g通常需要2或5,几乎不可能从P,G和G一% P中找出一个(离散的数学问题)。
许多语言都实现了该算法,以PHP包crypt_diffiehellman为例:
< PHP
include'diffiehellman PHP的;
*
*爱丽丝:素数= 563
*生成器= 5
*私钥= 9
*鲍伯:素数= 563
*生成器= 5
*私钥= 14
* /
$ = 563;
g=5;
爱丽丝=新crypt_diffiehellman美元(美元$ P,G,9);
alice_pubkey美元=美元爱丽丝-> generatekeys()-> getpublickey();
鲍勃=新crypt_diffiehellman美元(美元$ P,G,14);
bob_pubkey美元美元=鲍勃- > generatekeys()-> getpublickey();
alice_computekey美元=美元爱丽丝-> computesecretkey($ bob_pubkey)-> getsharedsecretkey();
bob_computekey美元=鲍勃-> computesecretkey美元(美元alice_pubkey)-> getsharedsecretkey();
回声{ $ alice_pubkey } - { $ bob_pubkey } - { $ alice_computekey } - { $ bob_computekey } ; / / 78-534-117-117