在 Actionscript 3 中,我需要计算一个数据(一个字符串,utf-8编码),使用一个秘钥(一个字符串,utf-8编码)。
以下是需要计算的数据(字符串):"symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559"。
以下是秘钥(字符串):"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"。
以下是计算结果(字符串):"c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71"。
请问有人能解决这个问题吗?(结果正确,但我不知道如何得到这个结果)
以下是我目前尝试过的内容:
以下是需要计算的数据(字符串):"symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559"。
以下是秘钥(字符串):"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"。
以下是计算结果(字符串):"c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71"。
请问有人能解决这个问题吗?(结果正确,但我不知道如何得到这个结果)
以下是我目前尝试过的内容:
// THE DATA
var dataToEncode:String = "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559";
var byteArrayOfDataToEncode:ByteArray = new ByteArray();
byteArrayOfDataToEncode.writeUTF(dataToEncode); // we write the string into the ByteArray
// THE SECRET KEY
var secretKey:String = "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j";
var byteArrayOfSecretKey:ByteArray = new ByteArray();
byteArrayOfSecretKey.writeUTF(secretKey); // we write the secret key into the ByteArray
// WE COMPUTE THE SIGNATURE
var HMAC_SHA256:HMAC = new HMAC(new SHA256());
var byteArrayOfResultSignature:ByteArray = HMAC_SHA256.compute(byteArrayOfSecretKey, byteArrayOfDataToEncode);
var resultSignature:String = byteArrayOfResultSignature.readUTF();
// WE SHOW THE RESULT SIGNATURE
trace("The result signature is: "+resultSignature);
这个HMAC类是使用AS3Crypto库创建的: https://github.com/Atmosphere/ActionScript/blob/master/src/com/hurlant/crypto/hash/HMAC.as
.ane
文件位于release
文件夹中。另外,tester
文件夹包含一个基本的示例应用程序。如果你的系统上没有Gradle,但可以将Main.as
文件作为起点进行重用而不需要首选设置。 - George Profenza