2011-10-19 9 views
0

私はswfプロジェクトをPHPに変換していますが、私はactionscriptにはあまりよくないので、Hex.toArray、Hex.fromString、Base64.encodeByteArrayをPHPのactionscript3に変換してください。いくつかのAS関数を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の関数であるが、2つの関数の結果は、あなたがhex2binの代わりにPHPでbin2hex、およびpack("H*", ...)を使用することができます異なる

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

hash_hmacでは、逆$ tmp4と$ tmp3の引数を入れました。それは期待されていますか? –

+0

はい、ASはキーであるため、データです。 PHPではデータ、キー – complez

答えて

1

です。主にPHPで使用されるbase64関数はbase64_encodebase64_decodeです。

データ表現のための配列はめったに使用されません。バイナリデータは一般にPHPで文字列に保持されます。しかし、本当に必要ならば$array = array_map("ord", str_split($string));がやります。

+0

こんにちは、ありがとうございます。私は自分の質問を編集しました、あなたはそれを見ることができますか? – complez

+0

'pack(" H * "、bin2hex($ tmp1))'は無意味です。最初は文字列をhexnumbersに変換し、hexnumbersは文字列に戻します。そして、あなたの変数名は従うことが不可能です。 – mario

+0

あなたは私のためにこの行をPHPコードに変換できますか? Hex.toArray(Hex.fromString(str)); – complez

関連する問題