ホームページ >バックエンド開発 >PHPチュートリアル >非対称キーとphpseclibで大きなメッセージを暗号化する方法
このチュートリアルは、非対称キーとPHPSECLIBライブラリを使用して大きなメッセージを暗号化する方法を示しています。
ハイブリッド暗号化(対称と非対称の方法を組み合わせて)これを克服します。 対称キーがメッセージを暗号化し、この対称キーは受信者の公開キーで暗号化され、追加されます。受信者は秘密鍵を使用して対称キーを復号化し、それを使用してメッセージを復号化します。
PHP Secure Communications Library(PHPSECLIB)は、RSAや対称アルゴリズム(DES、AES)を含むさまざまな暗号化アルゴリズムの純粋なPHP実装を提供する無料のオープンソースライブラリです。ハイブリッド暗号化をサポートし、暗号化が速く拡張されなくても確実に機能します。はじめに
伝送前に機密データを暗号化することが重要です。暗号化は、キーとアルゴリズムを使用して、プレーンテキスト(通常のデータ)を暗号文(秘密データ)に変換します。復号化はこのプロセスを逆転させます。
暗号化アルゴリズムは、数学操作をキーとプレーンテキストの数値値に適用して、暗号文を生成します。 より大きなキーはセキュリティを強化します。
2つの主要な暗号化アルゴリズムタイプが存在します:
対称アルゴリズム:
最適なソリューションは、対称暗号化と非対称暗号化を組み合わせます:
この例では、PHP Secure Communications Library(PHPSECLIB)を使用しています。 Composerを介してインストールします。 ドキュメントは、キーの生成
復号化関数
<code class="language-php">$rsa = new Crypt_RSA();
$keys = $rsa->createKey(2048);
file_put_contents('key.pri', $keys['privatekey']);
file_put_contents('key.pub', $keys['publickey']);</code>
結論
<code class="language-php">function encrypt_message($plaintext, $asym_key, $key_length = 150) {
$rsa = new Crypt_RSA();
$rij = new Crypt_Rijndael();
$sym_key = crypt_random_string($key_length);
$rij->setKey($sym_key);
$ciphertext = $rij->encrypt($plaintext);
$ciphertext = base64_encode($ciphertext);
$rsa->loadKey($asym_key);
$sym_key = $rsa->encrypt($sym_key);
$sym_key = base64_encode($sym_key);
$len = strlen($sym_key);
$len = dechex($len);
$len = str_pad($len, 3, '0', STR_PAD_LEFT);
$message = $len . $sym_key . $ciphertext;
return $message;
}</code>
安全なデータ通信が不可欠です。 対称アルゴリズムと非対称アルゴリズムの両方を活用するハイブリッド暗号化は、堅牢なソリューションを提供します。 PHPSECLIBは、このアプローチをPHPで実装するための信頼性が高く汎用性の高いツールを提供します。 ソースコードはgithub(元のテキストで提供されているリンク)で入手できます。
以上が非対称キーとphpseclibで大きなメッセージを暗号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。