我最近看了一篇關於password hashing的文章。爲什麼MD5/SHA1密碼哈希無法解密?
如何創建MD5或SHA1哈希以使其無法解密?我認爲,它必須通過某些FORMULA來加密字符串(它總是給同一個字符串使用相同的散列;所以不能有隨機化),這就是爲什麼我們應該能夠用相同的FORMULA解密它?或者人們不知道論壇?
我最近看了一篇關於password hashing的文章。爲什麼MD5/SHA1密碼哈希無法解密?
如何創建MD5或SHA1哈希以使其無法解密?我認爲,它必須通過某些FORMULA來加密字符串(它總是給同一個字符串使用相同的散列;所以不能有隨機化),這就是爲什麼我們應該能夠用相同的FORMULA解密它?或者人們不知道論壇?
MD5和SHA1不是加密算法。他們是哈希算法。它是單向公式。對特定字符串運行MD5或SHA1會產生始終相同的散列。不可能將函數反轉回原始字符串。
例如:
15國防部4 = 3
即使你知道公式是
在x mod 4
你不能推斷x,因爲它可能是3,7,11,15等...
顯然,MD5和SHA1要複雜得多!
在上面的例子中,輸入15總是會給你3的答案,但是沒有人能夠推導出原始數字。這不會導致很好的碰撞,其中多個輸入字符串可以給相同的哈希:
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
維基百科所使用的特定算法的信息:
好吧,那有道理... –
謝謝!這是我正在尋找的那種例子! – Gabo
一切都是正確的鬥志解釋,我想補充一點:
15 Mod 4 = 3
即使你知道公式是
在x mod 4
你不能推斷出X,因爲它可能是3,7,11,15等
我們可以去連更接近我們的情況,並有行動的結果(如你有哈希值作爲動作和動作描寫的結果)
在x mod 4 = 3
x可以是12,13,14或15,它不會告訴我們輸入了什麼樣的整數。
但是用這個公式找到與輸出相匹配的輸入很簡單。因此找到第一個原像很簡單。密碼散列的一個重要屬性是,您無法找到與給定輸出匹配的任何輸入。 – CodesInChaos
我一直認爲md5和sha1不能被解密,並在我的應用程序中使用。但令我驚訝的是,我發現了一些執行該程序的網站。 見http://www.crypt-security.com/ 因此,這個程序是不夠安全的
由逆公式。我離密碼學專家很遠,但其思想是你有兩個功能:可以在合理時間內計算的加密(明文)和解密(密文),這至少不能沒有密鑰。通常你可以做的最好的事情是通過加密函數運行所有的明文,直到你找到正確的。這需要指數時間,並由此導致方法的安全性。 –
@PanayiotisKarabassis MD5和SHA1不是加密算法,不能解密。他們是哈希函數。您的評論有點誤導。 – psych
確實。對不起... –