php生成签名及验证签名

来源:互联网 发布:淘宝众筹logo矢量图 编辑:程序博客网 时间:2024/04/27 20:51

php生成签名及验证签名

余超   yuchao86@gmail.com


啥也不说了,直接上源代码:


<?php  /**     * 根据原文生成签名内容     *     * @param string $data 原文内容     *     * @return string     * @author confu     */    function sign($data)    {        $filePath = 'test.p12';        if(!file_exists($filePath)) {            return false;        }         $pkcs12 = file_get_contents($filePath);        if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) {            $privateKey = $certs['pkey']; //根据实际情况键值可能不同            $publicKey = $certs['cert']; //根据实际情况键值可能不同            $binary_signature = "";            if (openssl_sign($data, $binarySignature, $privateKey, OPENSSL_ALGO_SHA1)) {                return $binarySignature;            } else {                return '';            }        } else {            return '';        }    }     /**     * 验证签名自己生成的是否正确     *     * @param string $data 签名的原文     * @param string $signature 签名     *     * @return bool     * @author confu     */    function verifySign($data, $signature)    {        $filePath = 'test.p12';        if(!file_exists($filePath)) {            return false;        }         $pkcs12 = file_get_contents($filePath);        if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) {            $publicKey = $certs['cert'];            $ok = openssl_verify($data, $signature, $publicKey);            if ($ok == 1) {                return true;            }        }        return false;    }     /**     * 验证返回的签名是否正确     *     * @param string $data 要验证的签名原文     * @param string $signature 签名内容     *     * @return bool     * @author confu     */    function verifyRespondSign($data, $signature)    {        $filePath = 'allinpay-pds.pem';        if(!file_exists($filePath)) {            return false;        }         $fp = fopen($filePath, "r");        $cert = fread($fp, 8192);        fclose($fp);        $pubkeyid = openssl_get_publickey($cert);         if(!is_resource($pubkeyid)) {            return false;        }         $ok = openssl_verify($data, $signature, $pubkeyid);        if ($ok == 1) {            openssl_free_key($pubkeyid);            return true;        }        return false;    }?>


原创粉丝点击