2012-06-11 42 views

回答

6

我已經回答了類似的問題:Python SHA1 DECODE function

總之,沒有它是不可能的。整個哈希的要點是需要一些長串並把它變成一個小串。哈希是破壞性的,你會丟失數據,所以它是不可逆的。

此外,爲了使事情更有趣,無限多的字符串具有相同的散列。除非您瞭解有關輸入的更多信息,否則不可能使用給定散列生成唯一字符串。


1:有噸的散列函數和一些可能有當你給一個特定的輸入功能,纔會產生「特殊」的哈希值。除了這些罕見的情況(如果它們甚至存在的話),其他每個輸出散列都有無限多的輸入字符串。

2

http://en.wikipedia.org/wiki/Cryptographic_hash_function

it is infeasible to generate a message that has a given hash 
+1

這是從「理想「哈希函數,它不存在。最近有一些關於MD5加密哈希函數的大驚小怪是因爲它已經證明**不能生成具有給定哈希的消息 - 而不是原始消息,但是替代地說明了攻擊者想要什麼它說。 SHA-1有一天可能會發生同樣的情況。 – Steve314

0

如果知道原始消息的長度(以512位的倍數),你只需要測試大小的2^512輸入。對每個應用SHA1操作,並比較結果。這不會假定醃製,而是相當重要的計算資源。

1

散列不是加密。加密就像洗牌拼圖一樣。哈希更像是將這些碎片放入攪拌機中,之後沒有合理的方法來恢復原始圖像。

+0

我不相信類比,但哈希不是加密+1。 – Steve314

1

SHA-1散列生成從任意大小的輸入的160位輸出。由於有可能的輸出比可能的輸出更多的輸入,所以肯定會碰撞,即。具有相同輸出的不同輸入。

這意味着它可能(通過蠻力或通過利用算法中的弱點 - 在我認爲的時刻沒有人知道)找到與給定散列對應的消息,但它可能不是原始信息。

即使您修改了輸入大小,如果它大於160位,也會出現衝突,並且無法顛倒散列函數。

相關問題