rsa类 php 非对称加密 公钥私钥
<?php
namespace App\Modules\SingleTenantAuth\Util;
use Illuminate\Support\Facades\DB;
use Exception;
/**
- Created by PhpStorm.
- User: h1646
- Date: 2018/7/31
- Time: 11:01
*/
class Rsa
{
/**
* 生成密钥对
* @author dzh
*/
function createKey() {
res = openssl_pkey_new(); if(res == false) return false;
openssl_pkey_export(res,private_key);
public_key = openssl_pkey_get_details(res);
return array('pub_key'=>public_key["key"],'prv_key'=>private_key);
}
/**
* RSA私钥加密
* @param string $private_key 私钥
* @param string $data 要加密的字符串
* @return string $encrypted 返回加密后的字符串
* @author dzh
*/
function privateEncrypt($private_key,$data){
$pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
$output = '';
openssl_private_encrypt($data,$output,$pi_key);
return base64_encode($output);
}
/**
* RSA公钥解密(私钥加密的内容通过公钥可以解密出来)
* @param string $public_key 公钥
* @param string $data 私钥加密后的字符串
* @return string $output 返回解密后的字符串
* @author dzh
*/
function publicDecrypt($public_key,$data){
$pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的
openssl_public_decrypt(base64_decode($data),$output,$pu_key);
return $output;
}
/**
* 用公密钥加密
*/
public function public_encrypt(input,public_key) {
pu_key = openssl_pkey_get_public(public_key);//这个函数可用来判断公钥是否是可用的
outpub = ''; openssl_public_encrypt(input,output,pu_key);
return base64_encode(output); } /** * 解密 公密钥加密后的密文 */ public function private_decrypt(input) {
pi_key = openssl_pkey_get_private(private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
output = ''; openssl_private_decrypt(base64_decode(input),output,pi_key);
return $output;
}
}