当前位置:  开发笔记 > 编程语言 > 正文

C#中的MD5哈希与动作脚本中的MD5哈希不匹配

如何解决《C#中的MD5哈希与动作脚本中的MD5哈希不匹配》经验,为你挑选了1个好方法。

我在Action Script中散列了一些数据,然后将散列与在C#中计算的散列进行比较,但它们不匹配.

谁知道为什么?

这是我在Action脚本中所做的:

    var hash : String = MD5.hash(theString);

这就是我在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();

我认为这是一个编码的东西,但不能把我的手指放在它上面......让我知道!

-ev



1> Timwi..:

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("ä"))));

(当然,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();
}

然后检查您获得的三个哈希中的哪一个与ActionScript中的哈希相同.然后,您将知道ActionScript使用的编码.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有