MD5 хеш в Python - PullRequest
       40

MD5 хеш в Python

0 голосов
/ 21 ноября 2018

Мне был предоставлен файл с пользователем и паролями в формате: $ id $ salt $ hashed.

Где ID обозначает тип шифрования, а id = 1 обозначает MD5 в стиле FreeBSD.

Есть пример, в котором я знаю пароль = "Алиса"

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

Что я делаю не так?Или даже неправильное понимание с самого начала?

1 Ответ

0 голосов
/ 21 ноября 2018

Вам необходимо использовать библиотеку crypt.Хэш $1$ является представителем MD5 на основе Unix.

>>> import crypt
>>> crypt.crypt('alice', crypt.METHOD_MD5)
$1$tlyP8ine$I9F3AiUCIgOjREqbx6WUg0

Функция salt рандомизируется функцией, чтобы новый хэш генерировался при каждом запуске команды.

Чтобы скопировать создание существующего хеша, вы можете передать существующий хеш как salt функции crypt.crypt:

>>> crypt.crypt('alice', '$1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/')
$1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/
...