0
8A-25-A5-14-E9-E0-A8-02-0E-91-32-46-44-7E-EE-11什麼樣的哈希算法產生這種文本?
以上是哈希文本。原文爲「welcome1」。有人可以識別這裏使用的算法嗎?根據this site
8A-25-A5-14-E9-E0-A8-02-0E-91-32-46-44-7E-EE-11什麼樣的哈希算法產生這種文本?
以上是哈希文本。原文爲「welcome1」。有人可以識別這裏使用的算法嗎?根據this site
,它是顯然是 「welcome1」
MD5(Unicode)的的Unicode表示的MD5哈希:
...
8a25a514e9e0a8020e913246447eee11:welcome1
具體,它是字符串「welcome1」的UTF-16LE(UTF16 Little Endian)表示形式
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] output = md.digest("welcome1".getBytes("UTF-16LE"));
for(byte out: output){
System.out.printf("%x", out);
}
System.out.println();
輸出:
8a25a514e9e0a82e913246447eee11
破折號不是散列輸出的一部分,只有十六進制字符。把這些出來並用google搜索通常會得出結果,尤其是如果它是一個常見的短語,例如「welcome1」
這是一個偉大的對象課,爲什麼在處理哈希算法時記住字符編碼很重要,它們按字節操作,而不是字符。使用ASCII或UTF8(甚至UTF-16BE)哈希「welcome1」會導致非常不同的輸出,因爲這些字符具有不同的基礎字節表示。
散列!=加密 – SLaks
常見的散列會像MD5一樣。我猜測它的長度爲16字節,可能更像SHA256,但如果沒有密鑰,就無法知道是否確實如此。文本從哪裏來? – sradforth
MD5哈希產生一個16字節(128位)的結果。這很可能是那個。 – SirDarius