ホームページ  >  記事  >  バックエンド開発  >  Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムの原理と PHP 実装バージョン_PHP チュートリアル

Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムの原理と PHP 実装バージョン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:451327ブラウズ

Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズム原理と PHP 実装バージョン

この記事では主に 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 を取り上げます。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

「DiffieHellman.php」をインクルードします;

/*

* アリス: 素数 = 563

* ジェネレーター = 5

* 秘密鍵 = 9

* ボブ: 素数 = 563

* ジェネレーター = 5

* 秘密鍵 = 14

*/

$p = 563;

$g = 5;

$alice = 新しい Crypt_DiffieHellman($p, $g, 9);

$alice_pubKey = $alice->generateKeys()->getPublicKey();

$bob = 新しい 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

http://www.bkjia.com/PHPjc/1000098.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1000098.html技術記事この記事では、Diffie-Hellman 鍵交換 (Diffie-Hellman) アルゴリズムの原理と PHP 実装バージョン、必要なものを主に紹介します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。