class Rsa
{
public $privateKey = '';
public $publicKey = '';
public $conf = ['config' => 'C:/xampp/php/extras/ssl/openssl.cnf'];
// 初始化,生成公钥和私钥对
public function __construct(){
$resource = openssl_pkey_new($this->conf);
openssl_pkey_export($resource, $this->privateKey, null, $this->conf);
$detail = openssl_pkey_get_details($resource);
$this->publicKey = $detail['key'];
}
// 公钥加密数据
public function publicEncrypt($data, $publicKey){
openssl_public_encrypt($data, $encrypted, $publicKey);
return $encrypted;
}
// 公钥解密数据
public function publicDecrypt($data, $publicKey){
openssl_public_decrypt($data, $decrypted, $publicKey);
return $decrypted;
}
// 私钥加密数据
public function privateEncrypt($data, $privateKey){
openssl_private_encrypt($data, $encrypted, $privateKey);
return $encrypted;
}
// 私钥解密数据
public function privateDecrypt($data, $privateKey){
openssl_private_decrypt($data, $decrypted, $privateKey);
return $decrypted;
}
}
$rsa = new Rsa();
echo "公钥:<br>" . $rsa->publicKey . "<br>";
echo "私钥:<br>" . $rsa->privateKey . "<br>";
echo "<hr>";
// 使用公钥加密
$str = $rsa->publicEncrypt('hello', $rsa->publicKey);
// 这里使用base64是为了不出现乱码,默认加密出来的值有乱码
$str = base64_encode($str);
echo "公钥加密(base64处理过):<br>" . $str . "<br>";
$str = base64_decode($str);
$pubstr = $rsa->publicDecrypt($str, $rsa->publicKey);
echo "公钥解密:<br>" . $pubstr . "<br>";
$privstr = $rsa->privateDecrypt($str, $rsa->privateKey);
echo "私钥解密:<br>" . $privstr . "<br>";
echo "<hr>";
// 使用私钥加密
$str = $rsa->privateEncrypt('world', $rsa->privateKey);
// 这里使用base64是为了不出现乱码,默认加密出来的值有乱码
$str = base64_encode($str);
echo "私钥加密(base64处理过):<br>" . $str . "<br>";
$str = base64_decode($str);
$pubstr = $rsa->publicDecrypt($str, $rsa->publicKey);
echo "公钥解密:<br>" . $pubstr . "<br>";
$privstr = $rsa->privateDecrypt($str, $rsa->privateKey);
echo "私钥解密:<br>" . $privstr . "<br>";
php 实现RSA加密解密
猜你喜欢
转载自my.oschina.net/xiaoerit/blog/1809697
今日推荐
周排行