ホームページ  >  記事  >  バックエンド開発  >  rsaを使用してphpで暗号化および復号化コードを実装する方法の詳細な説明

rsaを使用してphpで暗号化および復号化コードを実装する方法の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-08 10:00:552491ブラウズ

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=&#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:

●3つのDLLファイルの使用PHP 開発言語のコード例の openssl フォルダー内にある

1. システムが Windows システムで、ディレクトリに system32 ファイルがない場合は、2 つのファイル libeay32.dll と ssleay32.dll をコピーする必要があります。 2 つのファイルを system32 ファイル ディレクトリにコピーします。


2. php

インストールディレクトリ (phpext) に php_openssl.dll がない場合は、php_openssl.dll をこのフォルダーに入れてください

暗号化と復号化が好きな人は、この記事をよく読んでください。 。 。

以上がrsaを使用してphpで暗号化および復号化コードを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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