這裏有兩個哈希生成:散列非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