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 を生成します
上記から、対応する公開キーがkeyは秘密鍵を通じて生成できるので、秘密鍵private_keyをサーバー側で使用し、生成された公開鍵をandroidやios
などのフロントエンドに配布します。 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>";●3つのDLLファイルの使用PHP 開発言語のコード例の openssl フォルダー内にある1. システムが Windows システムで、ディレクトリに system32 ファイルがない場合は、2 つのファイル libeay32.dll と ssleay32.dll をコピーする必要があります。 2 つのファイルを system32 ファイル ディレクトリにコピーします。
2. php
暗号化と復号化が好きな人は、この記事をよく読んでください。 。 。
以上がrsaを使用してphpで暗号化および復号化コードを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。