PHP rsa 暗号化と復号化の例
オープンソース RSA キー生成ツール openssl (通常、Linux システムにはこのプログラムが付属しています) をダウンロードし、別のフォルダーに解凍して、bin ディレクトリに入り、次のコマンドを実行します:
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 つのコマンドは元の RSA 秘密鍵ファイル rsa_private_key.pem を生成し、2 番目のコマンドは元の RSA 秘密鍵を pkcs8 形式に変換し、3 番目のコマンドは RSA 公開鍵 rsa_public_key.pem を生成します。上記から、対応する秘密鍵を公開鍵として生成できることがわかるので、サーバー側では秘密鍵private_key.pemを使用し、公開鍵はandroidやiosなどのフロントエンドに配布されます
$private_key=fread($fp, 8192);
fclose($fp);
$public_key= fread($fp1,8192);
fclose($fp1);
//echo $private_key;
$pi_key=openssl_pkey_get_private($private_key);//この関数は、利用可能なリソース ID が返されるかどうかを判断するために使用できます。
$pu_key=openssl_pkey_get_public($public_key) ;//この関数は、公開キーが利用可能かどうかを判断するために使用できます。
print_r($pu_key) ;echo "n"; echo "
";
echo "
$encrypted = "";
$decrypted = "";
echo "暗号化されたソース データ: ".$data." n"; echo "
";
echo "秘密キーの暗号化:n"; echo "
";
openssl_private_encrypt($data,$encrypted,$pi_key);//秘密鍵暗号化
$encrypted =base64_encode($encrypted);//暗号化されたコンテンツには通常、特殊文字が含まれており、エンコード変換。ネットワーク間で URL を介して送信する場合は、base64 エンコードが URL に安全であるかどうかに注意してください。
echo ' 秘密キーが暗号化された後: '.$encrypted."n"; echo "
";echo "
";
echo "public key decrypt:n"; echo "
;";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//秘密鍵で暗号化されたコンテンツは公開鍵で復号化できます
echo 'After public key decryption:'.$decrypted." n"; echo "
";
echo "
openssl_public_encrypt($data,$encrypted,$pu_key);//公開鍵暗号化
$encrypted =base64_encode($encrypted);
echo $encrypted,"n"; echo "
";
echo "秘密鍵復号化:n"; br>gt;";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//秘密鍵の復号化
echo $decrypted,"n"; echo "
";
●PHP 開発言語のコード例の openssl フォルダー
の 3 つの DLL ファイルの使用方法 お使いのシステムが Windows システムの場合、1. system32 ファイル ディレクトリ
に libeay32.dll および ssleay32.dll ファイルがない場合は、これら 2 つのファイルを system32 ファイル ディレクトリにコピーする必要があります。
2. php インストールディレクトリ (phpext) に php_openssl.dll