Python 中的 MD5 哈希
MD5 hash in Python
我得到了一个包含用户名和密码的文件,格式为:$id$salt$hashed。
其中ID代表加密类型,id=1代表FreeBSD-style MD5。
有一个我知道密码的例子= "alice"
jsmith: $kDHTx$WKRXXT1P7UtjvU7CQ9eWs/:10063:0:99999:7:::
所以我在 Python 中这样做是为了检查
import hashlib
passw='alice'
salt='kDHTx'
hashed= hashlib.md5(salt+passw).hexdigest()
print('What i get is: '+hashed)
print('What i should: '+'WKRXXT1P7UtjvU7CQ9eWs')
但我什至没有正确获取格式:
What i get is: ba359e6dd36371c4dc5c187aac11e0d8
What i should: WKRXXT1P7UtjvU7CQ9eWs
我做错了什么?还是一开始就理解错了?
您需要使用 crypt
库而不是 hashlib
。
>>> import crypt
>>> crypt.crypt('alice', crypt.METHOD_MD5)
$tlyP8ine$I9F3AiUCIgOjREqbx6WUg0
salt是你传入的时候函数生成的crypt.METHOD_MD5
.
要重新创建现有哈希,您可以将其作为第二个参数传入:
>>> crypt.crypt('alice', '$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/')
$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/
我得到了一个包含用户名和密码的文件,格式为:$id$salt$hashed。
其中ID代表加密类型,id=1代表FreeBSD-style MD5。
有一个我知道密码的例子= "alice"
jsmith: $kDHTx$WKRXXT1P7UtjvU7CQ9eWs/:10063:0:99999:7:::
所以我在 Python 中这样做是为了检查
import hashlib
passw='alice'
salt='kDHTx'
hashed= hashlib.md5(salt+passw).hexdigest()
print('What i get is: '+hashed)
print('What i should: '+'WKRXXT1P7UtjvU7CQ9eWs')
但我什至没有正确获取格式:
What i get is: ba359e6dd36371c4dc5c187aac11e0d8
What i should: WKRXXT1P7UtjvU7CQ9eWs
我做错了什么?还是一开始就理解错了?
您需要使用 crypt
库而不是 hashlib
。
>>> import crypt
>>> crypt.crypt('alice', crypt.METHOD_MD5)
$tlyP8ine$I9F3AiUCIgOjREqbx6WUg0
salt是你传入的时候函数生成的crypt.METHOD_MD5
.
要重新创建现有哈希,您可以将其作为第二个参数传入:
>>> crypt.crypt('alice', '$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/')
$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/