PHP接口验签----一种简单可行的方式

背景:服务端和第三方服务有接口对接,那么第三方有没有一种简单的方式判断请求发自合法的合作方呢?
有一种简洁的方式就是,双方维护同一份私钥,在发起请求的时候,发起方将当前的请求参数,按照key值进行排序,然后’key=value’拼接到私钥后面,进行md5的编码。接收方以同样的处理方式,签名一致则合法,否则非法。如下为php的对应的sig生成算法举例:

//摘抄自http://docs.developer.qq.com
$secret_key = '3023IU&xmsfs78';
ksort($params);
foreach ($params as $key => $value) {
$secret_key.= $key.'='.$value;
}
$sign = md5($secret_key);
return $sign;
//java示例
String sign = MD5Util.MD5(KEY_STRING + jsonData);
return REQ_URL"?sign=" + sign + "&data=" + URLEncoder.encode(jsonData, "utf8");

//请求接收方处理示例:

你可能感兴趣的:(后端开发,#,PHP,接口对接)