2
最近,我注意到SHA算法計算隨機長度的散列。SHA計算隨機長度的散列
HashAlgorithm provider;
provider = HashAlgorithm.Create("System.Security.Cryptography.SHA256");
while(!stackoverflow) {
Console.WriteLine(Encoding.UTF8.GetString(
provider.ComputeHash(Encoding.UTF8.GetBytes(
(new Random()).Next().ToString())))
.Count().ToString());
}
輸出:
29
29
30
29
29
30
29
31
29
29
32
29
30
28
...
是否可以設置最大散列長度是多少? (可以使哈希無用..)或者我在計算哈希時做錯了什麼?編碼?
編輯:
上面的代碼段僅僅是一個例子。我最終需要的是一種方法,它接受一個字符串,計算字符串的散列並返回它。 HashAlgorithm.ComputeHash
需要字節並返回字節,所以我使用UTF8.GetBytes()
/UTF8.GetString()
進行轉換,這似乎是一個巨大的錯誤。
所以不同的編碼可以解決這個問題? ASCII? Unicode的?我剛剛看到使用ASCII,輸出總是32個字符。隨着Unicode,它是16. – Atrotygma
問題是:*你想要做什麼?* – Jon
我的意圖是生成一個隨機和唯一的哈希用作標識符。在我的「真實」應用程序中,其他部分會散列以保證獨特和隨機性。上面的代碼只是一個例子。我想要的是具有固定長度的十六進制字符的散列。但是這也是一個普遍的「編碼/加密」問題,因爲我還使用UTF8.GetString/UTF8.GetBytes和RSA密鑰生成。 – Atrotygma