Greg Hewgillの最初のポイントは強調する価値があります。私はちょっと驚いたことに、私のノートブックでは、システムhashlib.pyが世界中に公開されていることを発見しました。したがって、上記の認証を破っすることは簡単です:
localhost-2:coding $ cat hashcrack.py
class always_equal(object):
def __eq__(self, other):
return True
class sha512(object):
def __init__(self, password):
pass
def hexdigest(self):
return always_equal()
localhost-2:coding $ cat hashcrack.py >> /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
localhost-2:coding $ cat notsosecure.py
import hashlib
theInput = raw_input("Enter password: ")
theHashed = hashlib.sha512(theInput).hexdigest()
if theHashed == "35211b890b19afebfabc3451f04d150f1423bcb54ff7d62095677d7af7560fcvb56c112e879288836cb506853516c5dbd1d779cfaedf4a2f6f6a303600c0c589":
print "Correct!"
localhost-2:coding $ python notsosecure.py
Enter password: pwned
Correct!
は、そういえば、私も私は単に古いものでhexdigestをmonkeypatchedている可能性が、新しいSHA512クラスを作成する必要はありませんでした。とにかく
、代わりにraw_inputのそれが支配的なセキュリティ上の危険性は、あなたのハッシュ内のビット数ではないことをポイントに+1。..
出典
2012-01-06 04:58:37
DSM
+1:あなたはまた、新たな暗号ライブラリをチェックアウトする必要があります –