以下是基于OpenSSL的RSA加密解密示例攻略。
简介
RSA是一种非对称加密算法,可以实现数据加密与解密。OpenSSL是一个常用的加密算法库,内置了RSA算法,可以用PHP来调用。
准备工作
-
首先需要安装OpenSSL扩展,可以在php.ini中开启或者通过命令行启用。可以使用
openssl_get_cipher_methods()
函数来检查OpenSSL扩展是否已经安装。 -
生成私钥和公钥,使用openssl命令行工具生成私钥和公钥
shell
openssl genrsa -out rsa_private_key.pem 1024
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成的rsa_private_key.pem
是私钥,rsa_public_key.pem
是公钥。
- 将生成的公钥上传到服务器上,用于加密数据。
示例一:使用公钥加密数据
以下是使用PHP代码用公钥加密数据的步骤:
-
读取公钥文件
php
$public_key = file_get_contents('./rsa_public_key.pem'); -
使用openssl_public_encrypt函数进行数据加密
php
$data = 'hello world';
$result = '';
openssl_public_encrypt($data, $result, $public_key); -
加密后的结果为二进制格式,可以使用base64_encode函数进行编码,方便传输
php
$encoded_result = base64_encode($result);
使用完整示例:
<?php
$public_key = file_get_contents('./rsa_public_key.pem');
$data = 'hello world';
$result = '';
openssl_public_encrypt($data, $result, $public_key);
$encoded_result = base64_encode($result);
echo $encoded_result;
?>
示例二:使用私钥解密数据
以下是使用PHP代码用私钥解密数据的步骤:
-
读取私钥文件
php
$private_key = file_get_contents('./rsa_private_key.pem'); -
使用openssl_private_decrypt函数对加密后的数据进行解密
php
$encoded_result = 'HtzeiI9SKpXM/rk8fLjGx4IOuM+VeH8beTowKzEQYdM7bqC+L7...';
openssl_private_decrypt(base64_decode($encoded_result), $result, $private_key); -
解密后的结果为明文格式
php
echo $result;
使用完整示例:
<?php
$private_key = file_get_contents('./rsa_private_key.pem');
$encoded_result = 'HtzeiI9SKpXM/rk8fLjGx4IOuM+VeH8beTowKzEQYdM7bqC+L7...';
openssl_private_decrypt(base64_decode($encoded_result), $result, $private_key);
echo $result;
?>
以上就是基于OpenSSL的RSA加密解密示例攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php基于openssl的rsa加密解密示例 - Python技术站