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);
}
最后修改时间为:2016 年 12 月 22 日 05 时 06 分 PM
如果觉得我的文章对你有用,请随意赞赏

3 条评论

  1. jarjar

    博主的java站好快啊

    1. memory
      @jarjar

      我这个站不是java写的哟~~~这是typecho开源博客程序改了些功能....

  2. 凯哥自媒体

    这个挺不错的

发表评论