ホームページ >バックエンド開発 >PHPチュートリアル >PHP で対称暗号化と非対称暗号化を行うにはどうすればよいですか?
ネットワーク セキュリティの分野では、暗号化テクノロジは非常に重要な技術手段であり、データの暗号化と復号化を行ってデータのセキュリティを確保できます。人気のあるサーバー側プログラミング言語として、PHP は、さまざまなアプリケーション シナリオのニーズを満たす対称暗号化および非対称暗号化のサポートも提供します。
$key = '123456789'; // 密钥 $data = 'Hello World'; // 待加密字符串 $iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND); $cipher = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC, $iv); echo base64_encode($cipher); // 输出加密后的字符串上記のコードでは、DES 暗号化は mcrypt_encrypt 関数によって実行され、MCRYPT_MODE_CBC モードが埋め込みに使用されます。 $key は対称暗号化のキー、$data は暗号化される平文文字列、$iv はランダムな初期化ベクトルです。 復号化のサンプル コードは次のとおりです。
$cipher = base64_decode('JnFXVC9e+rzR8oUgM67Q0w=='); // 加密后的字符串 $key = '123456789'; // 密钥 $iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND); $plain = mcrypt_decrypt(MCRYPT_DES, $key, $cipher, MCRYPT_MODE_CBC, $iv); echo $plain; // 输出解密后的字符串
$data = 'Hello World'; // 待加密字符串 $res = openssl_pkey_new(); // 生成密钥对 openssl_pkey_export($res, $privateKey); // 获取私钥 $publicKey = openssl_pkey_get_details($res)["key"]; // 获取公钥 openssl_public_encrypt($data, $cipher, $publicKey); // 加密数据 echo base64_encode($cipher); // 输出加密后的字符串上記のコードでは、まず openssl_pkey_new 関数を使用して公開キーと秘密キーのペアを生成し、次に openssl_public_encrypt 関数を使用してデータを暗号化します。 。このとき取得した $publicKey は公開することができますが、$privateKey は秘密にしておく必要があります。 復号化のサンプル コードは次のとおりです。
$cipher = base64_decode('RvnOeNe+p8LtlpuUcq0wqFoX2yUaGXvY6FHlWpT0NQwzVQwVcDSnkw4C6YJMvnsMH4N5JDP18RI8x7CFqUCdJg=='); // 加密后的字符串 $privateKey = '-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----'; // 私钥 openssl_private_decrypt($cipher, $plain, $privateKey); // 解密数据 echo $plain; // 输出解密后的字符串上記のコードでは、最初に openssl_pkey_export 関数を使用して秘密キーの文字列形式を取得し、次に openssl_private_decrypt 関数を使用して秘密キーを復号化します。暗号化されたデータを取得し、元の平文を取得します。 概要: 上記の紹介を通じて、PHP では mcrypt および openssl 拡張ライブラリを使用して対称暗号化および非対称暗号化を実装できることがわかりました。アプリケーション シナリオのさまざまな暗号化要件に応じて、さまざまな暗号化アルゴリズムと暗号化方式の使用を柔軟に選択できます。もちろん、実際の暗号化プロセスでは、データのセキュリティを確保するためのキーの保護と管理にも注意を払う必要があります。
以上がPHP で対称暗号化と非対称暗号化を行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。