将一些 AS 函数转换为 php

发布于 2024-12-10 19:58:25 字数 845 浏览 0 评论 0 原文

我将 swf 项目转换为 php,我不太擅长使用 actionscript,因此我需要帮助将 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);
}

I converting a swf project to php, I'm not good with actionscript much so I need help to convert functions Hex.toArray, Hex.fromString, Base64.encodeByteArray in actionscript3 to 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);
}

This is PHP function I converted, but results of two functions are different

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2024-12-17 19:58:25

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

数组很少用于数据表示;在 PHP 中,二进制数据通常保存在字符串中。但如果确实需要 $array = array_map("ord", str_split($string)); 就可以了。

You can use bin2hex in PHP, and pack("H*", ...) in lieu of hex2bin. The primarily used base64 functions in PHP are base64_encode and base64_decode.

Arrays are seldomly used for data representation; binary data is generally kept in strings in PHP. But if really needed $array = array_map("ord", str_split($string)); would do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文