0
message = "this is the message";
key = "the_key";
timestamp = "20130121";
this_id = "13291";

key = Base64.decodeToByteArray(key);
message = this_id + "-" + timestamp;
hmac = Crypto.getHMAC("sha1");
message = Hex.fromArray(hmac.compute(key, Hex.toArray(Hex.fromString(message)))) + "-" + message;
data = Hex.toArray(Hex.fromString(message));
gen_token = Base64.encodeByteArray(data);

我不知道 AS 但我需要将上面的 AS 函数转换为 PHP。php中是否有类似“decodeToByteArray”和“encodeByteArray”的类似函数?我只能做到以下几点。

key = base64_decode(key);
$message = $this_id ."-".$timestamp;
$message = hash_hmac ('sha1', $key , $message) . $message;
$gen_token = base64_encode(key);
4

2 回答 2

1
string **base64_encode** ( string *$data* )

http://php.net/manual/en/function.base64-encode.php

string **base64_decode** ( string *$data* [, bool *$strict = false* ] )

http://php.net/manual/en/function.base64-decode.php

ByteArray(8 位实体数组)实际上是一个字符串。

因此,base64_encodebase64_decode 可以满足您的所有需求。

于 2013-01-21T08:43:06.090 回答
0

有些代码没有意义,例如:

message = this_id + "-" + timestamp;

那将覆盖 的值"this is the message"

此外,它似乎只在一个 id 和时间戳上生成一个键控散列,使消息内容容易受到不必要的更改。更有意义的是,您计算 和 上的this_id键控timestamp 散列 message

$key = base64_decode('value of key expressed in base64 string');
// calculate signature for remote validation
$sig = hmac_hash('sha1', "$this_id-$timestamp-$message", $key);

$gen_token = base64_encode("$sig-$message");
于 2013-01-21T08:59:11.903 回答