時候我已經在Flash下面的方法,其輸出兩種ByteArrays
,然後的base64編碼它們錯誤轉換的Flash C#
private function generateSignature(data:String, secretKey:String):String {
var secretKeyByteArray:ByteArray = new ByteArray();
secretKeyByteArray.writeUTFBytes(secretKey);
secretKeyByteArray.position = 0;
var dataByteArray:ByteArray = new ByteArray();
dataByteArray.writeUTFBytes(data);
dataByteArray.position = 0;
var hmac:HMAC = new HMAC(new SHA1());
var signatureByteArray:ByteArray = hmac.compute(secretKeyByteArray, dataByteArray);
return Base64.encodeByteArray(signatureByteArray);
}
在我的C#,我有:
string GenerateSignature(string secretKey, string base64Policy)
{
byte[] secretBytes = Encoding.UTF8.GetBytes(secretKey);
byte[] dataBytes = Encoding.UTF8.GetBytes(base64Policy);
HMACSHA1 hmac = new HMACSHA1(secretBytes);
byte[] signature = hmac.ComputeHash(dataBytes);
return ByteToString(signature);
}
但是,我得到與C#版本相比,Flash版本的結果集不同。任何人都可以發現明顯錯誤的東西嗎?
編輯
這裏是ByteToString
方法:
static string ByteToString(byte[] buffer)
{
string binary = string.Empty;
for (int i = 0; i < buffer.Length; i++)
{
binary += buffer[i].ToString("X2"); // Hex Format
}
return binary;
}
當你說你得到不同的結果給我們一個例子。 –