php非对称加密

2024-01-30 18:35:08 举报文章
//by www.qzphp.cn
//非对称加密函数
function myrsa($string='', $key = '', $action="EN",$sign=''){
    if($action =='KEY'){
        $config = array(
            "digest_alg" => "sha512",
            "private_key_bits" => 2048, //字节数512 1024 2048 4096 等 ,不能加引号,此处长度与加密的字符串长度有关系
            "private_key_type" => OPENSSL_KEYTYPE_RSA,   //加密类型
        );
        $res = openssl_pkey_new($config);
        openssl_pkey_export($res, $private_key);
        $public_key = openssl_pkey_get_details($res);
        $public_key = $public_key["key"];
        $data = array(
            'public_key'=> $public_key,
            'private_key'=> $private_key,
        );
        return $data;
    }elseif($action == 'EN'){
        //$key = public_key
        openssl_public_encrypt($string, $encrypted, $key);
        return base64_encode($encrypted);
    }elseif($action == 'DE'){
        //$key = private_key
        openssl_private_decrypt(base64_decode($string), $decrypted, $key);
        return $decrypted;
    }elseif($action == 'SIGN'){
        //$key = private_key
        openssl_sign($string, $signature, $key, OPENSSL_ALGO_SHA256);
        return base64_encode($signature);
    }elseif($action == 'VERIFY'){
        //$key = public_key
        $result = openssl_verify($string, base64_decode($sign), $key, OPENSSL_ALGO_SHA256);
        return $result;//1成功,0失败
    }
}


如果你认为本文可读性较差,内容错误,或者文章排版错乱,请点击举报文章按钮,我们会立即处理!