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 秘密鍵を変換します。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開発言語のコード例のopensslフォルダー内のDLLファイルの使用方法
1. システムがWindowsシステムで、libeay32.dllとssleay32.dllがない場合。 system32 ファイル ディレクトリ
にファイルがある場合は、これら 2 つのファイルを system32 ファイル ディレクトリにコピーする必要があります。
2. php インストール ディレクトリ (phpext) に php_openssl.dll がない場合は、このフォルダーに php_openssl.dll を配置してください
暗号化と復号化が好きな人は、この記事を注意深く読んでください。
PHP rsa 暗号化と復号化の使用に関する詳細な説明については、PHP 中国語 Web サイトに注目してください。