2010-02-26 232 views
4

我有這樣的方法哈希的字符串:SHA1哈希問題

byte[] buffer = enc.GetBytes(text); 
SHA1CryptoServiceProvider cryptoTransformSHA1 = 
       new SHA1CryptoServiceProvider(); 
string hash = BitConverter.ToString(
       cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", ""); 

return hash; 

我的問題是:

是結果哈希總是相同的字符串一樣嗎?

幾天前我散列了一個字符串,它似乎現在導致了另一個散列,但我不確定。

+5

你不加密任何東西,你哈希:http://en.wikipedia.org/wiki/Hash_function – 2010-02-26 13:55:53

+1

你不能用提供的代碼告訴......當你從一個編碼改變到另一個編碼的哈希也會改變。但我認爲enc是固定的 - > Ignacios答案。 – tanascius 2010-02-26 13:59:43

回答

10

是的,相同的明文字符串會每次散列到相同的SHA1散列。

3

只要字節相同,就會得到完全相同的散列值。請注意,特殊字符和空格也是字節。

Wikipedia Link

0

的ID取決於!如果您使用相同的編碼,相同的純文本字符串將散列到相同的SHA1散列!使用不同的編碼將導致不同的SHA1哈希。