ホームページ >バックエンド開発 >PHPチュートリアル >PHP は Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムを実装します

PHP は Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムを実装します

*文
*文オリジナル
2017-12-27 10:03:413575ブラウズ

PHP で Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムを実装するにはどうすればよいですか?この記事では主に、Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムの原理と PHP の実装例を紹介します。お役に立てれば幸いです。

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 パッケージの Crypt_DiffieHellman を例に挙げます:

<?php
include &#39;DiffieHellman.php&#39;;
 
/*
 *   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 array_chunk() を使用せずに配列を分割するアルゴリズム

phpアルゴリズム下の画像を印刷する方法

セッションデッドロックを解決するPHPメソッド_PHPチュートリアル


以上がPHP は Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。