ホームページ  >  記事  >  バックエンド開発  >  PHP は RSA 非対称暗号化テクノロジーを実装しています

PHP は RSA 非対称暗号化テクノロジーを実装しています

WBOY
WBOYオリジナル
2023-06-18 09:34:443735ブラウズ

RSA 非対称暗号化テクノロジは、現在最も一般的で安全な暗号化方式の 1 つです。広く使用されているプログラミング言語である PHP には、RSA 暗号化の実装において独自の利点もあります。この記事では、PHP を使用して RSA 非対称暗号化テクノロジを実装する方法を読者に紹介します。

1. RSA アルゴリズムとは

RSA アルゴリズムは非対称暗号化テクノロジであり、通常はデータの暗号化とデジタル署名に使用されます。そのセキュリティは主に数論の問題、つまり非常に大きな整数を非常に短時間で因数分解することの難しさに基づいています。

RSA アルゴリズムの暗号化プロセスは次のとおりです:

  1. 2 つの大きな素数 p と q を選択し、その積 n = p*q を計算します;
  2. φ (n) = (p-1)*(q-1) を計算します;
  3. e と φ(n) が互いに素になるように整数 e を選択します;
  4. d を計算しますthat e と d は ≡ 1 (mod φ(n)) を満たす;
  5. 公開鍵は (n,e)、秘密鍵は (n,d) である;
  6. 暗号化する場合データを暗号化するには公開キー e を使用し、データを復号化する場合は、秘密キーに d を使用して復号化します。

2. PHP を使用して RSA アルゴリズムを実装する

PHP を使用して RSA アルゴリズムを実装するには、phpseclib と OpenSSL という 2 つの重要なサードパーティ ライブラリを使用する必要があります。前者は主にフロントエンドの暗号化に使用され、後者はバックグラウンドの復号化に使用されます。これら 2 つのライブラリの使用方法を以下に紹介します。

2.1 phpseclib ライブラリ

phpseclib は、PHP で実装された暗号化および復号化クラス ライブラリであり、RSA、DSA、ECDSA などの複数の非対称暗号化アルゴリズムをサポートしています。 RSA 暗号化に phpseclib を使用する場合、次の手順を実行する必要があります:

  1. phpseclib ライブラリを導入します:
require_once('Crypt/RSA.php');
  1. 公開キーと秘密キーを生成します:
$rsa = new Crypt_RSA();
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$keys = $rsa->createKey();
file_put_contents('public_key.pem', $keys['publickey']);
file_put_contents('private_key.pem', $keys['privatekey']);
  1. 公開キーを使用して暗号化:
$data = 'hello, world';
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('public_key.pem'));
$ciphertext = $rsa->encrypt($data);
  1. 秘密キーを使用して復号化:
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('private_key.pem'));
$plaintext = $rsa->decrypt($ciphertext);

2.2 OpenSSL ライブラリ

OpenSSL ライブラリは、さまざまな暗号化アルゴリズムと SSL/TLS プロトコルの実装を含むオープン ソース ライブラリです。 PHP では、openssl ライブラリを拡張することでこのライブラリを使用できます。 OpenSSL を使用して RSA 暗号化を実装する手順は次のとおりです。

  1. 秘密キー ファイルの生成:
$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$private_key = openssl_pkey_new($config);
openssl_pkey_export_to_file($private_key, "private.key");
  1. 公開キー ファイルの生成:
$public_key = openssl_pkey_get_details($private_key);
$public_key = $public_key["key"];
file_put_contents("public.key", $public_key);
  1. 公開キーを使用して暗号化:
$data = 'hello, world';
openssl_public_encrypt($data, $ciphertext, $public_key);
  1. 秘密キーを使用して復号化:
openssl_private_decrypt($ciphertext, $plaintext, $private_key);

3. 概要

PHP を使用して RSA 非対称暗号化テクノロジを実装すると、より安全で信頼性の高いデータ送信および保護ソリューションが提供されます。この記事では、phpseclib と OpenSSL ライブラリを使用して RSA アルゴリズムを実装する手順について説明します。読者は、自分のニーズに応じて実装に適切なライブラリを選択できます。利用にあたっては、データの不正な改ざんや盗難を防ぐため、秘密鍵の安全性を確保する必要があります。

以上がPHP は RSA 非対称暗号化テクノロジーを実装していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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