PHP rsa暗号化と復号化の使い方
この記事では、主に PHP rsa 暗号化と復号化の使用法を紹介します。この記事では、公開鍵と秘密鍵の生成と、生成された公開鍵と秘密鍵を PHP での暗号化と復号化に使用する例について説明します。それ
PHP サーバーがクライアントと対話してオープン API を提供する場合、通常、API データ送信の機密部分を暗号化する必要があります。このとき、rsa 非対称暗号化の使用方法を示す例が役に立ちます。 PHPでデータの暗号化と復号化を実現します
1. 暗号化と復号化の最初のステップは、公開鍵と秘密鍵のペアを生成することです。秘密鍵で暗号化されたコンテンツは、公開鍵で復号化できます (逆も同様です)。
オープンソース RSA キー生成ツール openssl (通常、Linux システムにはこのプログラムが付属しています) をダウンロードし、別のフォルダーに解凍して、bin ディレクトリに入り、次のコマンドを実行します。?
2 3
|
openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
$private_key = '-----RSA 秘密キーを開始----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/ Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH 2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6 ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL 3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq deJU/chHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+ qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2 4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c -----RSA 秘密鍵を終了-----';
$public_key = '-----公開鍵の開始----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt 3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTskCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o 2n1vP1D+tD3amHsK7QIDAQAB -----公開キーを終了-----';
//エコー $private_key; $pi_key = openssl_pkey_get_private($private_key);//この関数は、秘密キーが利用可能かどうかを判断するために使用でき、リソース ID Resource id を返すことができます $pu_key = openssl_pkey_get_public($public_key);//この関数は、公開鍵が利用可能かどうかを判断するために使用できます print_r($pi_key);エコー "n"; print_r($pu_key);エコー "n";
$data = "aassssasssddd";//元のデータ $暗号化 = ""; $復号化 = "";
echo "ソースデータ:",$data,"n";
echo "秘密鍵暗号化:n";
openssl_private_encrypt($data,$encrypted,$pi_key);//秘密鍵暗号化 $encrypted =base64_encode($encrypted);//暗号化されたコンテンツには通常、特殊文字が含まれており、ネットワーク間で URL を介して送信する場合は、base64 エンコードが URL 安全かどうかに注意してください 。echo $encrypted,"n";
echo "公開鍵復号化:n";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//秘密鍵で暗号化されたコンテンツは公開鍵で復号化できます echo $decrypted,"n";
エコー「--------------------------------------n」; echo "公開鍵暗号化:n";
openssl_public_encrypt($data,$encrypted,$pu_key);//公開鍵暗号化 $encrypted =base64_encode($encrypted); echo $encrypted,"n";
echo "秘密鍵の復号化:n"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//秘密鍵の復号化 echo $decrypted,"n"; |