簡體   English   中英

我可以根據初始密鑰和輸出哈希識別哈希算法嗎?

[英]Can I identify a hash algorithm based on the initial key and output hash?

如果我同時擁有初始密鑰和創建的哈希,有沒有辦法確定使用了什么哈希算法?

例如:

  • 關鍵 :更高
  • 哈希 :df072c8afcf2385b8d34aab3362020d0
  • 算法 :?

通過查看長度,您可以決定嘗試哪種算法。 MD5和MD2產生16字節摘要。 SHA-1產生20個字節的輸出。 等等。然后對輸入執行每個哈希,看它是否與輸出匹配。 如果是這樣,那就是你的算法。

當然,如果超過“關鍵”被散列,你也需要知道。 根據應用程序,散列通常是迭代應用的。 也就是說,散列的輸出再次被散列,並且該輸出被散列...經常數千次。 因此,如果您事先知道執行了多少次迭代,那也可以提供幫助。

除了加密哈希的輸出中的長度之外沒有什么可以幫助縮小產生它的算法的范圍。

  1. 哈希似乎只包含十六進制字符(每個字符代表4位)

  2. 總計數為32個字符 - >這是一個128位長的哈希值。

  3. 符合這些規范的標准哈希算法有:haval,md2,md4,md5和ripemd128。

  4. 最高概率是使用MD5。

  5. md5(“更高”)!= df072c8afcf2385b8d34aab3362020d0

  6. 最高的可能性是使用了一些鹽。

  7. 最高概率仍然是MD5。

好吧,鑒於有一些有限數量的流行哈希算法,也許你提出的並不是那么荒謬。

但是假設我問你這個:

如果我有輸入和輸出,我可以確定功能嗎?

一般來說不,你不能簡單地通過知道一個輸入和一個輸出來確定任何函數的內部工作 ,而無需任何附加信息。

// very, very basic illustration
if (unknownFunction(2) == 4) {
    // what does unknownFunction do?
    // return x + 2?
    // or return x * 2?
    // or return Math.Pow(x, 2)?
    // or return Math.Pow(x, 3) - 4?
    // etc.
}

沒有匹配任何常見的哈希算法:

http://www.fileformat.info/tool/hash.htm?text=higher

也許在散列之前添加 ...

除了嘗試一堆你知道並看到是否有任何匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM