Ev.*_*Ev. 2 c# md5 actionscript-3
我在Action Script中散列了一些数据,然后将散列与在C#中计算的散列进行比较,但它们不匹配.
谁知道为什么?
这是我在Action脚本中所做的:
var hash : String = MD5.hash(theString);
Run Code Online (Sandbox Code Playgroud)
这就是我在C#中所做的:
var md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(theSameString));
var sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
var hash = sBuidler.ToString();
Run Code Online (Sandbox Code Playgroud)
我认为这是一个编码的东西,但不能把我的手指放在它上面......让我知道!
-ev
ActionScript必须使用不同的字符串编码,但我不清楚哪个(我试图谷歌,但很难找到).
因此,我建议您尝试以下方法:
Console.WriteLine(ToHex(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes("ä"))));
Console.WriteLine(ToHex(MD5.Create().ComputeHash(Encoding.Unicode.GetBytes("ä"))));
Console.WriteLine(ToHex(MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes("ä"))));
Run Code Online (Sandbox Code Playgroud)
(当然,ToHex你已经编写的函数将事物转换为十六进制:)
static string ToHex(byte[] data)
{
var sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
sBuilder.Append(data[i].ToString("x2"));
return sBuilder.ToString();
}
Run Code Online (Sandbox Code Playgroud)
然后检查您获得的三个哈希中的哪一个与ActionScript中的哈希相同.然后,您将知道ActionScript使用的编码.
| 归档时间: |
|
| 查看次数: |
1772 次 |
| 最近记录: |