Уведомления

Группа в Telegram: @pythonsu

#1 Май 17, 2024 13:15:39

chusva
Зарегистрирован: 2024-05-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Подлянка в библиотеке hashlib

В библиотеке hashlib я обнаружил то ли баг, то ли фичу, или я чего-то не понимаю. Суть в том, что библиотекой hashlib хэш можно сгенерировать только один раз. После создания первого хэша, последующие хэши будут одни и те же при разных входных данных. Для понимания ситуации даю простенький код:

 import hashlib
class User:
    def __init__(self, login: str, password: str):
        self.login = login
        self.password = password
        self.passhash = hashlib.md5(b'{password}').hexdigest()
    def __str__(self):
        return f"Login: {self.login}\t Password: {self.password}\t Hash: {self.passhash}"
lstusers = [
        User('admin', 'qwerty'),
        User('user1', '123456'),
        User('user2', '987654'),
        ]
for user in lstusers:
    print(user)

После запуска этого кода вы увидите, что при совершенно разных паролях хэши этих паролей всегда будут одинаковыми, и все они от первого. Об этой фиче нигде в документации не упоминается. Я смотрел и на русском и на английском языках.
У меня возникли вопросы: Есть ли ещё какая-нибудь в Python альтернатива hashlib'у? Или этот баг как-то можно преодолеть?

Офлайн

#2 Май 17, 2024 13:22:34

DeeKeiD
Зарегистрирован: 2023-11-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Подлянка в библиотеке hashlib

Потому что ты хешируешь строку “password” вместо содержания переменной password.
self.passhash = hashlib.md5(password.encode()).hexdigest()

Офлайн

#3 Май 17, 2024 13:25:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2739
Репутация: +  183  -
Профиль   Отправить e-mail  

Подлянка в библиотеке hashlib

 import hashlib
 
>>> hashlib.md5(b"qwerty").hexdigest()
'd8578edf8458ce06fbc5bb76a58c5ca4'
 
>>> hashlib.md5(b"123456").hexdigest()
'e10adc3949ba59abbe56e057f20f883e'
 
>>> hashlib.md5(b"987654").hexdigest()
'6c44e5cd17f0019c64b042e4a745412a'



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Май 17, 2024 13:34:48

chusva
Зарегистрирован: 2024-05-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Подлянка в библиотеке hashlib

DeeKeiD
Потому что ты хешируешь строку “password” вместо содержания переменной password.self.passhash = hashlib.md5(password.encode()).hexdigest()

Спасибо за науку!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version