簡體   English   中英

Python和密碼術:md5

[英]Python and Cryptography: md5

我對python和密碼學非常感興趣,我想知道python中破解哈希最簡單的方法是什么。

我想構建一個可以破解此哈希值的小型python腳本:21232f297a57a5a743894a0e4a801fc3,即“ admin”。

我需要經過什么過程才能猜測此哈希表示什么?

我已經閱讀了有關md5的知識,並且在這一點上,我才剛剛開始學習密碼學背后的方法,但是它們也進入了深度計算機科學領域,這是我目前還不了解的東西。

我在這里做了一些研究: http : //nsfsecurity.pr.erau.edu/crypto/md5.html

您可以像這樣輸出十六進制的md5:

>>> from hashlib import md5
>>> md5('admin').hexdigest()
'21232f297a57a5a743894a0e4a801fc3'

如果您有單詞列表,則可以一一嘗試,如果它們的md5與您想要的單詞匹配,則輸出。 (這被稱為字典攻擊)

>>> words = 'test', 'alex', 'steve', 'admin'
>>> for word in words:
...     if md5(word).hexdigest() == '21232f297a57a5a743894a0e4a801fc3':
...         print word
...         break
... 
admin

如果您真的想破解MD5,則在GPU上會有更好的結果-嘗試使用OCLHashCat之類的工具

http://www.google.com/search?q=md5+lookup

>>> import requests
>>> import lxml.html
>>> 
>>> def reverse_md5(digest):
...     r = requests.get('http://www.md5-lookup.com/index.php?q={}'.format(digest))
...     root = lxml.html.fromstring(r.content)
...     for x in root.cssselect('#LSResult table tr')[4:-3]:
...         return x.find('td').text_content() 
...     # fallback to brute force.
...     # ...
... 
>>> reverse_md5('21232f297a57a5a743894a0e4a801fc3')
'admin'
>>> reverse_md5('21232f297a57a5a743894a0e4a801fc4') # lookup fail
>>>

暫無
暫無

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

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