| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <?phpnamespace app\common\payment;use Payment\Common\PayException;class AppUtil{    /**     * 将参数数组签名     */    //RSA签名    public static function Sign(array $array)    {        ksort($array);        $bufSignSrc = AppUtil::ToUrlParams($array);        $private_key = AppConfig::PRIVATEKEY;        $private_key = chunk_split($private_key, 64, "\n");        $key = "-----BEGIN RSA PRIVATE KEY-----\n" . wordwrap($private_key) . "-----END RSA PRIVATE KEY-----";        //   echo $key;        if (openssl_sign($bufSignSrc, $signature, $key)) {            $sign = base64_encode($signature);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的        } else {            throw new PayException('签名错误');        }        return $sign;    }    public static function ToUrlParams(array $array)    {        $buff = "";        foreach ($array as $k => $v) {            if ($v != "" && !is_array($v)) {                $buff .= $k . "=" . $v . "&";            }        }        $buff = trim($buff, "&");        return $buff;    }    /**     * 校验签名     * @param array 参数     * @param unknown_type appkey     */    public static function ValidSign(array $array)    {        $sign = $array['sign'];        unset($array['sign']);        ksort($array);        $bufSignSrc = AppUtil::ToUrlParams($array);        $public_key = AppConfig::PUBLICKEY;        $public_key = chunk_split($public_key, 64, "\n");        $key = "-----BEGIN PUBLIC KEY-----\n$public_key-----END PUBLIC KEY-----\n";        $result = openssl_verify($bufSignSrc, base64_decode($sign), $key);        return $result;    }}?>
 |