要将下面的代码转换成java代码,另外请告知一声原加密是采用什么模式什么算法,最好能给出一个加密的java函数。谢谢下面是php解密的代码,
function decodeToken($appid, $secret, $token) {
$signkey = substr(mhash(MHASH_SHA256, "SIGNATURE" .$secret), 0, 16);
$cryptkey = substr(mhash(MHASH_SHA256, "ENCRYPTION" .$secret), 0, 16);
$data = base64_decode($token);
$iv = substr($data, 0, 16);
$crypted = substr($data, 16);
$mode = MCRYPT_MODE_CBC;
$enc = MCRYPT_RIJNDAEL_128;
$data = mcrypt_decrypt($enc, $cryptkey, $crypted, $mode, $iv);
list($body, $sig) = split("&sig=", $data);
$sign1 = base64_decode(urldecode($sig));
$sign2 = hash_hmac("sha256", $body, $signkey, true);
if ($sign1 != $sign2)
return false; $pairs = array();
foreach (explode('&', $body) as $pair) {
$kv = split('=', $pair);
if (count($kv) != 2) {
self::debug("Error: parse: Bad input to parse: " . $pair);
return;
}
$pairs[$kv[0]] = $kv[1];
} return $pairs;
}
function decodeToken($appid, $secret, $token) {
$signkey = substr(mhash(MHASH_SHA256, "SIGNATURE" .$secret), 0, 16);
$cryptkey = substr(mhash(MHASH_SHA256, "ENCRYPTION" .$secret), 0, 16);
$data = base64_decode($token);
$iv = substr($data, 0, 16);
$crypted = substr($data, 16);
$mode = MCRYPT_MODE_CBC;
$enc = MCRYPT_RIJNDAEL_128;
$data = mcrypt_decrypt($enc, $cryptkey, $crypted, $mode, $iv);
list($body, $sig) = split("&sig=", $data);
$sign1 = base64_decode(urldecode($sig));
$sign2 = hash_hmac("sha256", $body, $signkey, true);
if ($sign1 != $sign2)
return false; $pairs = array();
foreach (explode('&', $body) as $pair) {
$kv = split('=', $pair);
if (count($kv) != 2) {
self::debug("Error: parse: Bad input to parse: " . $pair);
return;
}
$pairs[$kv[0]] = $kv[1];
} return $pairs;
}
解决方案 »
- 泛型研究-继承 的一个问题?
- 问JAVA学习的重点
- 各位大佬,有谁在C语言环境下VC++调试过JNI的
- HURRY!!! HURRY!!! what's wrong with this method??
- 给程序每行都加上注解。重重谢
- 还是请教个jmf的问题
- 大虾们谈谈排序问题,(100赠送)从第一次从数据库中得到数据有默认排序方式封装到对象中去,在前台可以有多种排序方法,条件是不能再从数
- 关于java基础编程的一些问题~ 谢谢
- 超级简单,网站怎样计算某页的访问量?
- Java中,如果要break mylabel;mylabel是否被限制在一定的位置?
- drawImage 时候 java.lang.OutOfMemoryError!
- 问一个stringbuffer的问题,求大牛帮忙解答
Base64