签名加密

    /**
     * 签名加密函数
     *
     * @access public
     * @param mixed $args 请求参数
     * @param mixed $key 秘钥
     * @return string
     */
    public function makeSignature($args, $key)
    {
        if(isset($args['sign'])) {
            $oldSign = $args['sign'];
            unset($args['sign']);
        } else {
            $oldSign = '';
        }

        ksort($args);
        $requestString = '';
        foreach($args as $k => $v) {
            $requestString .= $k . '=' . urlencode($v);
        }
        $newSign = hash_hmac("md5",strtolower($requestString) , $key);
        return $newSign;
    }

  

例:http://127.0.0.1/pow/api/?Uname=张三A&pwd=123456

 

1、获取值

Uname=张三A

pwd=123456

2、对参数名进行升序排序

pwd=123456

Uname=张三A

3、拼接字符串

pwd=123456Uname=张三A

4、对参数值进行urlencode编码

pwd=123456uname=%E5%BC%A0%E4%B8%89A

5、把所有字符转换为小写

pwd=123456uname=%e5%bc%a0%e4%b8%89a

6、哈希加密

哈希算法:md5

加密字符串: pwd=123456uname=%e5%bc%a0%e4%b8%89a

秘钥:512113

 

例:hash_hmac("md5", pwd=123456uname=%e5%bc%a0%e4%b8%89a , 512113)

生成签名820e286fb97a23d025699b0c61a32198

请求加上生成的签名如:

http://127.0.0.1/pow/api/?Uname=张三A&pwd=123456&sign=820e286fb97a23d025699b0c61a32198

posted @ 2019-06-24 13:59  沈启伦  阅读(110)  评论(0)    收藏  举报