PHP代码变成java代码

$appid=“123”;$apikey=“456”;$secretKey=“789”;$timestamp=time();$params=array('appid'=>... $appid = “123”;$apikey = “456”;$secretKey =“789”;$timestamp = time();$params = array( 'appid' => $appid, 'apikey' => $apikey, 'secretkey' => $secretKey, 'timestamp' => $timestamp,);ksort($params);//对数组键值进行升序排序$param_uri = http_build_query($params,'','&');$sig = base64_encode(hash_hmac('sha1', $param_uri, $secretKey));
谁能帮我把这段PHP代码转换成java的代码。谢谢了。最终是要sig的值
展开
 我来答
匿名用户
2014-01-11
展开全部
php代码没几行,信息量很大,翻译成java代码行数量比较大。仅提供思路和php代码解释。
---------------
<?php 
$appid = "123"; //数组里面的值,id。
$apikey = "456"; //数组里面的值,为加密密钥。
$secretKey ="789"; //数组里面的值,安全密钥。
$timestamp = time(); ////数组里面的值,获得当前时间。

//UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。
//echo输出$timestamp变量值,例如输出了1389379960
echo $timestamp;  

//定义数组。以键值对方式存储。
//'appid' 'apikey' 'secretkey' 'timestamp'是key,键。
//$appid $apikey, $secretKey $timestamp是value,值。
$params = array('appid'=>$appid, 'apikey'=>$apikey, 'secretkey'=>$secretKey, 'timestamp'=>$timestamp);

//对数组键值进行升序排序。排序结果为apikey appid secretkey timestamp
ksort($params);

//拼接数组中的参数,并且用encoded编码。
//http_build_query -- 生成 url-encoded 之后的请求字符串。当数组没有写下标时,就会用第二个参数结合当前默认下标当前缀。
//$param_uri变量值,结果为apikey=456&appid=123&secretkey=789×tamp=1389379498
$param_uri = http_build_query($params,'','&');
echo $param_uri;   //echo输出结果为apikey=456&appid=123&secretkey=789×tamp=1389379498

//先使用调用hash_hmac方法加密,HMAC-SHA1算法。
//$secretKey为安全密钥,$param_uri为要加密的明文。'sha1'是HMAC-SHA1算法。
//再调用base64_encode方法加密,base64_encode 使用 MIME base64 对数据进行编码。
$sig = base64_encode(hash_hmac('sha1', $param_uri, $secretKey));

?>


java:
1、用hashmap存储元素,键值对方式。
Map<String, String> hashMap = new HashMap<String, String>(){
            {
            put("appid", "123");
            put("apikey", "456");
    put("secretKey", "789");
    put("timestamp", "当前UNIX 时间戳,秒数,java中获取");
            }            
};

2、java中可以通过Timestamp获得UNIX 时间戳。
3、然后对hashmap进行升序排序。
4、然后写一个方法遍历hashmap,拼接成字符串格式为apikey=456&appid=123&secretkey=789&timestamp=1389379498
然后对该字符串进行encoded编码,输出格式为apikey=456&appid=123&secretkey=789×tamp=1389379498
5、通过java中HMAC-SHA1算法加密该字符串,$secretKey为安全密钥。
6、再通过base64_encode加密第5步产生的字符串。这是最终sig结果。
匿名用户
2014-01-11
展开全部
java:
1、用hashmap存储元素,键值对方式。
Map<String, String> hashMap = new HashMap<String, String>(){
{
put("appid", "123");
put("apikey", "456");
put("secretKey", "789");
put("timestamp", "当前UNIX 时间戳,秒数,java中获取");
}
};

2、java中可以通过Timestamp获得UNIX 时间戳。
3、然后对hashmap进行升序排序。
4、然后写一个方法遍历hashmap,拼接成字符串格式为apikey=456&appid=123&secretkey=789×tamp=1389379498
然后对该字符串进行encoded编码,输出格式为apikey=456&appid=123&secretkey=789×tamp=1389379498
5、通过java中HMAC-SHA1算法加密该字符串,$secretKey为安全密钥。
6、再通过base64_encode加密第5步产生的字符串。这是最终sig结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上官元恒zsd
2013-12-30 · TA获得超过1770个赞
知道小有建树答主
回答量:3799
采纳率:28%
帮助的人:1179万
展开全部
$ 变 int 。。。。。。。。。。。。
追问
不懂别乱回答ok?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式