使用 SHA256 時,它總是回傳包含在標準英文字母(小寫)和阿拉伯數字(0-9)中的字符。所以回傳的字符集是 [az]U[0-9]
這讓我感到困惑的原因是我聽說 SHA256 應該有 2^256 個不同的結果,因為每個位都是“隨機的”,每個位元組都應該由一個完全隨機的 ASCII 字符表示,而不是一個適合 36 個限制集的字符字符(26個字母和10個數字)
基本上,我想知道我的 SHA256 是否表現正常,如果是,為什么會這樣。我正在使用sha256sumlinux 附帶的標準功能。
uj5u.com熱心網友回復:
是的,你的假設是正確的。SHA256 將生成總共 32 個位元組(= 256 位),每個位元組具有介于 0 和 255(含)之間的任意值。
但問題就在這里,這些位元組中的大多數不代表有效的 ASCII 字符(僅 0 - 127),其中一些是不可見的(空格、制表符、換行符和幾個控制字符)。
為了“呈現”SHA256,位元組以十六進制格式編碼。單個位元組由 2 個字符表示。00 = 0, 7f = 127, ff = 255。
空字串的 SHA256 哈希為 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,或者如果每個位元組都轉換為十進制:
227 176 196 66 152 252 28 20 154 251 244 200 153 111 185 36 39 174 65 228 100 155 147 76 164 30 14 8 29
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/319095.html
