Хэш MD5 в C # не соответствует хэшу MD5 в скрипте действия - PullRequest
2 голосов
/ 27 августа 2010

Я хэширую некоторые данные в Action Script, затем сравниваю хэш с вычисленным в C #, но они не совпадают.

Кто-нибудь знает почему?

Вот что я делаю вСценарий действия:

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

Я думаю, что это кодировка, но я не могу это понять ...дай мне знать!

-Ев

Ответы [ 2 ]

5 голосов
/ 27 августа 2010

ActionScript должен использовать другую строковую кодировку, но мне неясно, какую (я пытался найти в Google, но найти ее очень сложно).

Поэтому я рекомендую попробовать следующее:

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.

0 голосов
/ 27 августа 2010

Строки в ActionScript представлены в кодировке UTF-16.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...