这里有两个哈希生成:散列非ASCII字符C#
现在,我的问题是: 为什么试图散列符'当哈希不同€'(0x80)? 我认为这是因为'€'不是普通的ASCII字符。 这两个哈希中的哪一个是'正确的'?
我正试图计算散列发生器1与C#返回的散列。 这个哈希函数不返回它。
private string GetMD5Hash(string TextToHash)
{
if ((TextToHash == null) || (TextToHash.Length == 0))
{
return string.Empty;
}
MD5 md5 = new MD5CryptoServiceProvider();
byte[] textToHash = Encoding.Default.GetBytes(TextToHash);
byte[] result = md5.ComputeHash(textToHash);
return BitConverter.ToString(result).Replace("-", "").ToLower();
}
我怎么能改变它,所以它返回我想要的散列?
附加信息: 我做了一个小AutoIt脚本:
#include <Crypt.au3>
ConsoleWrite(StringLower(StringMid(_Crypt_HashData(Chr(128), $CALG_MD5),3)) & @CRLF)
,并返回我想要的哈希值! 但是我需要一个C#代码:)
您是否尝试过使用UTF-8? –
如此将“Encoding.Default.GetBytes”更改为“Encoding.UTF8.GetBytes”? – Alex
我不认为这是错误的,因为AutoIt代码得到正确的散列。那么它有什么不同? – Alex