我将swf项目转换为php,我对动作脚本不太好所以我需要帮助将actionscript3中的函数Hex.toArray,Hex.fromString,Base64.encodeByteArray转换为php。
ActionScript
public function spawn(query_str:String, key:String, token:String = "") : String{
var tmp1:* = key + "&" + token;
var tmp2:* = Crypto.getHMAC("sha1");
var tmp3:* = Hex.toArray(Hex.fromString(tmp1));
var tmp4:* = Hex.toArray(Hex.fromString(query_str));
var tmp5:* = tmp2.compute(tmp3, tmp4);
return Base64.encodeByteArray(tmp5);
}
这是我转换的PHP函数,但两个函数的结果不同
function spawn($query_str, $key, $token = ''){
$tmp1 = $key . "&" . $token;
$tmp3 = pack("H*" , bin2hex($tmp1));
$tmp4 = pack("H*" , bin2hex($query_str));
$tmp5 = hash_hmac('sha1', $tmp4, $tmp3);
return base64_encode($tmp5);
}
答案 0 :(得分:1)
您可以在PHP中使用bin2hex
,使用pack("H*", ...)
代替hex2bin
。 PHP中主要使用的base64函数是base64_encode
和base64_decode
。
阵列很少用于数据表示;二进制数据通常保存在PHP中的字符串中。但如果确实需要$array = array_map("ord", str_split($string));
会这样做。