ホームページ  >  記事  >  バックエンド開発  >  php rsa暗号化と復号化の使用方法の詳細な説明

php rsa暗号化と復号化の使用方法の詳細な説明

高洛峰
高洛峰オリジナル
2016-12-21 10:25:591521ブラウズ

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=&#39;php ras加密算法&#39;;
$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 &#39;私钥加密后:&#39;.$encrypted."\n"; echo "<br>";echo "<br>";
echo "public key decrypt:\n"; echo "<br>";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来 
echo &#39;公钥解密后:&#39;.$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 サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。