Я очень близко понимаю, как именно работает функция сравнения bcrypt, но в моих знаниях есть несколько пробелов.
Мое понимание до сих пор:
brcypt генерирует хешированный пароль, используя простой текстовый пароль и случайно сгенерированную соль. Хешированный пароль представляет собой комбинацию версии bcrypt, хешированной соли и сцепленного хэшированного простого текстового пароля. Когда пользователь входит в систему, его простой текстовый пароль запускается через функцию сравнения. В этот момент bcrypt знает, сколько символов в хэше и с какого смещения начать вырезать хешированную соль из полного хэша. Затем он объединяет соль с переданным в виде обычного текста паролем, пропуская его по алгоритму хеширования для получения окончательной строки хеширования. Хешированная строка сравнивается с хешированной строкой в базе данных, и, если есть точное совпадение символов, пароль верен.
2 вопроса ..
Разве хэши не могут быть аннулированы? Если так, то как bcrypt знает, как расшифровать хешированную соль, а затем использовать ее для хэширования входящего простого текстового пароля. Это не имеет никакого логического смысла для меня.
Если алгоритм brcypts написан так, что он всегда может создать хешированную соль, которую он всегда знает, как расшифровать, разве хакеры не могут просто использовать этот алгоритм, чтобы извлечь каждый хешированный пароль из базы данных и вырезать соли? Тогда он может создать радужную таблицу для каждой соли и взломать каждый отдельный пароль? Это кажется логичным для меня.
Простите, если мой вопрос не имеет никакого смысла. Рад редактировать.
Читайте статьи, читайте вопросы о переполнении стека, смотрите видео и спрашивайте старшего инженера.