Bcrypt ha sh одинаков для разных строк - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь создать га sh для 2 более длинных разных строк с bcrypt (в python)

Это работает для более коротких строк (например, "a" и "b"), но когда я использую длинную строку с тем же началом, она возвращает одинаковое значение ha sh.

Я должен отметить, что значение соли остается одинаковым для обеих строк.

import bcrypt

hash_msg1 = b"1 b'$2b$12$kknL1S6HaV1/DyNiHhV/ue9SPIOAx.qY2iE33QS8.pi8jM0gvZ53a' {'him': -120, 'me': 100}"
hash_msg2 = b"1 b'$2b$12$kknL1S6HaV1/DyNiHhV/ue9SPIOAx.qY2iE33QS8.pi8jM0gvZ53a' {'him': -1, 'me': 1}"

salt = bcrypt.gensalt()

hash1 = bcrypt.hashpw(hash_msg1, salt)
hash2 = bcrypt.hashpw(hash_msg2, salt)

if hash1 == hash2:
    print('Hash is the same')
else:
    print('It works')

Это печатает 'Ha sh - то же самое'

Я попытался использовать другую библиотеку под названием rsa, в которой вы можете использовать rsa.compute_hash(message, 'SHA-256'). Я пробовал это с этими двумя сообщениями, это работало, но я хотел бы знать, как я могу сделать это с bcrypt .

(хотя я должен также упомянуть, что ha sh из Библиотека rsa не использует соль, но я могу просто добавить соль в виде строки в конец основной строки)

Кажется, что существует максимальный предел символов, но мне интересно, как я могу получить это все равно работает.

1 Ответ

1 голос
/ 27 января 2020

Из документов:

Алгоритм bcrypt обрабатывает только пароли длиной до 72 символов

https://pypi.org/project/bcrypt/

Таким образом, тот факт, что ваши документы начинаются с одной и той же последовательности символов, означает, что вы получите тот же га sh.

Только что появился комментарий, ссылающийся на этот же контент. Документы также содержат обходной путь. однако этот обходной путь включает предварительное хеширование с другой библиотекой, такой как RSA, поэтому необходимость использования bcrypt будет зависеть от вашего варианта использования.

...