PHP中使用OpenSSL生成证书及加密解密

依赖于OpenSSL扩展

/*加密解密*/
function authcode($string, $operation = 'E') {
    $ssl_public = file_get_contents(DATA_PATH."/conf/cert_public.key");
    $ssl_private = file_get_contents(DATA_PATH."/conf/cert_private.pem");
    $pi_key =  openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
    $pu_key = openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的
    if(false == ($pi_key || $pu_key)) return '证书错误';
    $data = "";
    if($operation=='D'){
        openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密
    }else{
        openssl_public_encrypt($string,$data,$pu_key);//公钥加密
        $data = base64_encode($data);
    }
    return $data;
}
/*生成证书*/
function exportOpenSSLFile(){
    $config = array(
        "digest_alg"       => "sha512",
        "private_key_bits" => 4096,                     //字节数    512 1024  2048   4096 等
        "private_key_type" => OPENSSL_KEYTYPE_RSA,     //加密类型
    );
    $res = openssl_pkey_new($config);
    if($res == false) return false;
    openssl_pkey_export($res, $private_key);
    $public_key = openssl_pkey_get_details($res);
    $public_key = $public_key["key"];
    file_put_contents(DATA_PATH."/conf/cert_public.key",$public_key);
    file_put_contents(DATA_PATH."/conf/cert_private.pem",$private_key);
    openssl_free_key($res);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值