2011-10-19 3 views
0

PHP로 SWF 프로젝트를 변환하는 것이고, ActionScript에 많은 도움이되지 않으므로 PHP로 actionscript3의 Hex.toArray, Hex.fromString, Base64.encodeByteArray 함수를 변환하는 데 도움이 필요합니다.일부 AS 기능을 PHP로 변환합니다.

액션

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

I 변환 이것은 PHP 함수하지만, 두 함수의 결과는 당신이 hex2bin 대신 PHP에서 bin2hexpack("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

관련 문제