Sha-256

機率最後一個字元 sha256 雜湊

  • February 21, 2018

一個快速的問題。我想使用 SHA256 散列(比特幣塊的塊散列)的最後一個字元作為我的隨機源。是 100 /16(不同字元的數量)= 6.25% 對所有字元都是正確的,或者某些字元更有可能是雜湊的最後一個字元。

任何現代雜湊的輸出都是二進制的。然而,並非所有字節值都映射到(可列印的)字元。因此,您正在查看的是雜湊的文本表示,使用諸如十六進制(例如 for sha256sum)或 base 64 之類的編碼。

您提到的值是 16,所以我們假設輸出是十六進制的。在這種情況下,每個字元0-9A-F(大寫或小寫)一起預期的機率精確為 $ 1\over{16} $ ,假設觀察者沒有關於輸入的任何資訊。

如果輸入可以被猜測和驗證,那麼猜測輸出的機會是完美的1:攻擊者可以簡單地自己進行雜湊計算來計算輸出。您必須執行 HMAC 而不是散列函式並保持密鑰機密。


根據您的要求,您最好使用已知的安全 PRNG(或 DRBG)並使用輸入播種它。

引用自:https://crypto.stackexchange.com/questions/55835