keccak256() 函式的輸出到底是什麼?
我一直在瀏覽文章和 youtube 影片,但我仍然不明白。
我正在嘗試找到一個可以用簡單的術語向自己解釋的地方(我對編碼還是很陌生)。
到目前為止,我所擁有的是:
“keccak256() 將輸入映射為隨機的 256 位十六進制數。”
我還不明白輸出到底是什麼。
使用 keccak256 雜湊生成器,我知道它應該看起來像這樣:
97fc46276c172633607a331542609db1e3da793fca183d594ed5a61803a10792
hexadecimal -> numbers 使用 base-16 系統(這部分我理解,地址中可以看到。)
256 位 -> 256 位二進制數字(這部分我沒有。我沒有看到它與輸出的關係。)
先感謝您。
作為序言,讓我們談談十六進制。
十六進制只是一個值的表示。所以二進制數的十六進製表示
1100
是F
。您可以通過首先將1000
二進制轉換為十進制(它是1 * 8 + 1 * 4 = 12
)然後將其轉換為十六進制來驗證這一點B
。所以
1100
二進制是B
十六進制的,也是12
十進制的(它是14
八進制的,無論你選擇什麼基數都可以!)順便說一下,讓我們想想“256 位十六進制數”到底是什麼意思。
好吧,我們已經知道什麼是“十六進制數”,它是使用 base-16(十六進制基數)表示的數字。所以這意味著我們應該期望輸出被格式化為十六進制數。但是我們根本沒有討論過這個十六進制數是什麼!
256 位正在談論將返回的數字的*大小。*我可以很容易地說出 32 字節或 64 位十六進制數。因此,作為一個 256 位數字,它只能保存和之間的值
0
(2^256 - 1
如果我們假設該數字沒有符號)。如果你查看你的十六進制輸出
97fc46276c172633607a331542609db1e3da793fca183d594ed5a61803a10792
併計算那裡的字元數,你會數到 64。每個十六進製字元代表 4 位,所以我們這裡有 256 位!