求大神把如下Java代码转成php的写法?
//开发者的AccessKey和AccessSecretStringaccessKey="2016100112345678";StringaccessSecret="Pr...
// 开发者的Access Key和Access Secret
String accessKey = "2016100112345678";
String accessSecret = "PrN2HybJmXzjgOzjQEPwy9pMDZR55z01";
String apiUrl = "http://dev.zxxk.com/api/getSubjectList";
// 创建参数表
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("accessKey", accessKey);
paramMap.put("stage", 2);
paramMap.put("timestamp", "2016-10-01 13:12:12");
// 对参数名进行字典排序
String[] keyArray = paramMap.keySet().toArray(new String[0]);
Arrays.sort(keyArray);
// 拼接有序的参数名-值串
StringBuilder needEncryptString = new StringBuilder();
for (String key : keyArray){
needEncryptString.append(key).append("=").append(paramMap.get(key)).append("&");
}
// 拼接上开发者Access Secret
needEncryptString.append("accessSecret").append("=").append(accessSecret);
// SHA1计算
String encryptString = org.apache.commons.codec.digest.DigestUtils.sha1Hex(needEncryptStrin g.toString());
// 签名示例,签名结果为:b5fd1917b512cbdb9a666715e7df87192ff23d9a
System.out.println(encryptString); 展开
String accessKey = "2016100112345678";
String accessSecret = "PrN2HybJmXzjgOzjQEPwy9pMDZR55z01";
String apiUrl = "http://dev.zxxk.com/api/getSubjectList";
// 创建参数表
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("accessKey", accessKey);
paramMap.put("stage", 2);
paramMap.put("timestamp", "2016-10-01 13:12:12");
// 对参数名进行字典排序
String[] keyArray = paramMap.keySet().toArray(new String[0]);
Arrays.sort(keyArray);
// 拼接有序的参数名-值串
StringBuilder needEncryptString = new StringBuilder();
for (String key : keyArray){
needEncryptString.append(key).append("=").append(paramMap.get(key)).append("&");
}
// 拼接上开发者Access Secret
needEncryptString.append("accessSecret").append("=").append(accessSecret);
// SHA1计算
String encryptString = org.apache.commons.codec.digest.DigestUtils.sha1Hex(needEncryptStrin g.toString());
// 签名示例,签名结果为:b5fd1917b512cbdb9a666715e7df87192ff23d9a
System.out.println(encryptString); 展开
2个回答
2019-11-14
展开全部
这算法,是java 内置的,php也内置这算法,所以,直接使用——至于结果是否相同,要看算法的结果了
<?php
//需要加密的字符串
$str = "this is string";
//通过sha1进行加密
$res = sha1($str);
//通过指定第二个参数加密
$res = sha1($str,true);
?>
<?php
//需要加密的字符串
$str = "this is string";
//通过sha1进行加密
$res = sha1($str);
//通过指定第二个参数加密
$res = sha1($str,true);
?>
2019-11-13
展开全部
这不就是微信接口签名的计算方式吗,微信官方开发包里有php版本的...
追问
问题这不是微信签名的计算方式,是合作方的接口(不是什么大厂),只有Java版本示例
追答
<?php
$accessKey = "2016100112345678";
$accessSecret = "PrN2HybJmXzjgOzjQEPwy9pMDZR55z01";
$apiUrl = "http://dev.zxxk.com/api/getSubjectList";
$paramMap = [
"accessKey"=>$accessKey,
"stage"=>2,
"timestamp"=>"2016-10-01 13:12:12"
];
ksort($paramMap);
$needEncryptString = "";
foreach($paramMap as $k=>$v){
$needEncryptString=$needEncryptString.$k."=".$v."&";
}
$needEncryptString=$needEncryptString."accessSecret=".$accessSecret;
$sign = sha1($needEncryptString, false);
print($sign)
?>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询