将一些AS函数转换为php

时间:2011-10-19 07:04:57

标签: php actionscript

我将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);
}

1 个答案:

答案 0 :(得分:1)

您可以在PHP中使用bin2hex,使用pack("H*", ...)代替hex2bin。 PHP中主要使用的base64函数是base64_encodebase64_decode

阵列很少用于数据表示;二进制数据通常保存在PHP中的字符串中。但如果确实需要$array = array_map("ord", str_split($string));会这样做。