2013-01-21 25 views
0

8A-25-A5-14-E9-E0-A8-02-0E-91-32-46-44-7E-EE-11什麼樣的哈希算法產生這種文本?

以上是哈希文本。原文爲「welcome1」。有人可以識別這裏使用的算法嗎?根據this site

+5

散列!=加密 – SLaks

+0

常見的散列會像MD5一樣。我猜測它的長度爲16字節,可能更像SHA256,但如果沒有密鑰,就無法知道是否確實如此。文本從哪裏來? – sradforth

+2

MD5哈希產生一個16字節(128位)的結果。這很可能是那個。 – SirDarius

回答

2

,它是顯然是 「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」會導致非常不同的輸出,因爲這些字符具有不同的基礎字節表示。

相關問題