求将下面的签名算法 使用PHP写一便 谢谢
//获取sign方法
private String getSign(Map params, String key){
Object[] keys = params.keySet().toArray();
//字段排序
Arrays.sort(keys);
List paramPairs = new ArrayList();
for (int i = 0; i < keys.length; i++) {
//method参数不参与签名的生成
if (keys[i].equals("method")) {
continue;
}
//连接key和value:key=value
paramPairs.add(keys[i] + "=" + params.get(keys[i]));
}
//每个键值对用&连接:key1=value1&key2=value2&key3=value3
String temp = StringUtils.join(paramPairs, "&");
//对字符串进行URLl编码
try {
temp = URLEncoder.encode(temp, "UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//参数串首、尾部加上通讯密钥
temp = key + temp + key;
String sign = DigestUtils.md5Hex(temp);
return sign;
}