phprsa加密解密使用详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

phprsa加密解密使⽤详解
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,第⼆条命令将原始 RSA私钥转换为 pkcs8格式,第三条⽣成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配置常见问题:
●PHP开发语⾔的代码⽰例中openssl⽂件夹中的3个DLL⽂件⽤法
1、如果你的系统是windows系统,且system32⽂件⽬录下没有libeay32.dll、ssleay32.dll这两个⽂件
那么需要拷贝这两个⽂件到system32⽂件⽬录。

2、如果您的php安装⽬录下(php\ext)中没有php_openssl.dll
那么请把php_openssl.dll放在这个⽂件夹中
喜欢加密解密的⼩伙伴⼀定要好好看看这篇⽂章,受益匪浅。

相关文档
最新文档