1. 暗号化と復号化の最初のステップは、公開キーと秘密キーのペアを生成することです。秘密キーで暗号化されたコンテンツは、公開キーで復号化できます。
オープンソースの 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
最初のコマンドは、元の RSA 秘密鍵ファイル rsa_private_key.pem を生成します。 2 番目のコマンドは、元の RSA 秘密鍵ファイル rsa_private_key.pem を生成します。pkcs8 形式に変換します。3 番目のステップは、RSA 公開鍵 rsa_public_key.pem を生成します
上記から、対応する公開鍵は、秘密鍵なので、サーバー側で秘密鍵private_key.pemを使用し、公開鍵はAndroidとiOSに配布されますフロントエンドを待ちます
2. PHPで生成された公開鍵と秘密鍵を使用して暗号化および復号化します、コードを直接アップロードします
$fp=fopen("rsa/rsa_private_key.pem","r"); //你的私钥文件路径 $private_key=fread($fp,8192); fclose($fp); $fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公钥文件路径 $public_key=fread($fp1,8192); fclose($fp1); //echo $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);echo "\n"; echo "<br>"; print_r($pu_key);echo "\n"; echo "<br>"; echo "<hr>"; $data='php ras加密算法'; $encrypted = ""; $decrypted = ""; echo "加密的源数据:".$data."\n"; echo "<br>"; echo "private key encrypt:\n"; echo "<br>"; openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密 $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 echo '私钥加密后:'.$encrypted."\n"; echo "<br>";echo "<br>"; echo "public key decrypt:\n"; echo "<br>"; openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来 echo '公钥解密后:'.$decrypted."\n"; echo "<br>"; echo "<hr>"; echo "public key encrypt:\n"; echo "<br>"; openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密 $encrypted = base64_encode($encrypted); echo $encrypted,"\n"; echo "<br>"; echo "private key decrypt:\n"; echo "<br>"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密 echo $decrypted,"\n"; echo "<br>";
PHP の RSA 設定 FAQ:
●PHP 開発言語 DLL ファイルの使用例のコードの openssl フォルダーにある 3 を直接アップロードします
1. システムが Windows システムで libeay32 がない場合。 dll および ssleay32.dll ファイルが system32 ファイル ディレクトリ
にある場合は、これら 2 つのファイルを system32 ファイル ディレクトリにコピーする必要があります。
2. php インストール ディレクトリ (phpext) に php_openssl.dll がない場合は、このフォルダーに php_openssl.dll を入れてください
暗号化と復号化が好きな人は、この記事をよく読んでメリットを得るようにしてください。 。 。
PHP rsa 暗号化と復号化の使用に関する詳細な説明については、PHP 中国語 Web サイトに注目してください。