Sha-3
十六進制和 ASCII 給出不同的 SHA3 雜湊,為什麼?
十六進制和 ASCII 使用相同的二進制程式碼進行編碼。為什麼 ASCII 中的消息和十六進制中的相同消息會產生不同的雜湊?
例如,消息
helping strangers over the internet is fun!!!!!!!!!!!!!!!!!!!!!!
給出了 hash8029b81d7b1c01460710c855651d2f44062e57fca135987a8558f30d0264e07bea1be37e759bd9059b11758be47bef473e9691526acda84089d10415e327ef7a
,而消息的十六進制,則
68656c70696e6720737472616e67657273206f7665722074686520696e7465726e65742069732066756e21212121212121212121212121212121212121212121
給出另一個雜湊,d19bf1494bd6a3f71794dd5a07e83fde48147ab0e3736348af61e73fcddfc2733ba6d89740d3d99667dff9bed3ce1a61ad6215b4cfdfdb09eaf86b1d20280ce1
您所說的十六進制實際上是一個 ascii 編碼的十六進制編碼字元串。換句話說,它類似於
ascii(hex(string))
. 在另一種情況下,您只是傳遞 ascii 字元串。換句話說,您使用的工具需要一個 ascii 字元串。因此,通過鍵入
686564
等,您正在對十六進制編碼的字元串進行 ascii 編碼。因此,您獲得不同的輸出是有道理的。請注意,所有散列函式都會發生這種情況,而不僅僅是 SHA3。