rsa类 php 非对称加密 公钥私钥

96
爱学习的小仙女呀
2018.07.31 18:57* 字数 170

<?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;
}

}

php