我得到了一个包含用户名和密码的文件,格式为:$ id $ salt $ hashed。
ID代表加密类型,id = 1代表FreeBSD风格的MD5。
有一个示例,我知道密码=“ alice”
orElse
所以我已经在Python中完成了检查
jsmith: $1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/:10063:0:99999:7:::
但是我什至无法正确获取格式:
import hashlib
passw='alice'
salt='kDHTx'
hashed= hashlib.md5(salt+passw).hexdigest()
print('What i get is: '+hashed)
print('What i should: '+'WKRXXT1P7UtjvU7CQ9eWs')
我在做什么错?甚至一开始就理解错误?
答案 0 :(得分:3)
您需要使用crypt
库。 $1$
哈希表示基于Unix的MD5。
>>> import crypt
>>> crypt.crypt('alice', crypt.METHOD_MD5)
$1$tlyP8ine$I9F3AiUCIgOjREqbx6WUg0
该函数将salt
随机化,以确保每次运行该命令时都会生成新的哈希。
要复制现有哈希的创建,您可以将现有哈希作为salt
传递给crypt.crypt
函数:
>>> crypt.crypt('alice', '$1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/')
$1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/