Python中的MD5哈希

问题描述 投票:1回答:1

我收到了一个包含用户和密码的文件,格式为:$ id $ salt $ hashed。

ID代表加密类型,id = 1代表FreeBSD风格的MD5。

有一个例子我知道密码=“alice”

jsmith: $1$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

我究竟做错了什么?甚至从一开始就理解错误?

python encryption hash md5
1个回答
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/
© www.soinside.com 2019 - 2024. All rights reserved.