디 피 헤 르 만 키 교환(Diffiechellman)알고리즘 원리 와 PHP 구현 판

디 피 헤 르 만(Diffiechellman)은 쌍방 이 안전 하지 않 은 공공 채널 에서 비밀 키 를 만 들 수 있 는 알고리즘 으로 쌍방 후기 에 이 비밀 키 를 이용 하여 암호 화(예 를 들 어 RC4)내용 을 만 들 수 있다.
디 피 헤 르 만 알고리즘 원 리 는 간단 하 다.

위의 원리 와 같이 마지막 으로 수학 원 리 를 통 해(g^b%p)^a%p=(g^a%p)^b%p 를 증명 하기 쉬 우 므 로 같은 키 를 얻 을 수 있 습 니 다.
위 에 a,b 와 마지막 으로 나 온 공공 키 는 비밀 이 고 다른 것 은 모두 공공 채널 에서 전달 할 수 있 습 니 다.실제 운용 중 p 가 매우 크 고 g 는 보통 2 또는 5 를 취한 다.그러면 p,g,g^a%p 에서 a(이산 수학 문제)를 계산 하 는 것 은 거의 불가능 합 니 다.
많은 언어 가 이 알고리즘 을 실 현 했 습 니 다.PHP package 에서 CryptDiffie Hellman 을 예 로 들 면:

<?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

좋은 웹페이지 즐겨찾기