У вас, похоже, есть какое-то фундаментальное недопонимание относительно хеширования пароля.Прежде всего, как и любая хеш-функция, хеш-функция пароля в математическом смысле также является функцией .Т.е. это просто отображение, которое присваивает фиксированное значение из своего диапазона каждому элементу своего входного домена.
То, что отличает хеши паролей от обычных хешей, это две вещи: во-первых, они предназначены для медленной и /или использовать большие объемы памяти при оценке.(Это не имеет значения для нашего обсуждения здесь.) И во-вторых, они берут второй ввод, соль.
Для функции хеширования пароля H вы хотите, чтобы для любого фиксированного пароля m и любых двух солей s ≠ s 'itне только считает, что H (m, s) ≠ H (m, s '), но также учитывая значения хеш-функции и соли, вы не сможете обнаружить, что они являются значениями хеш-функции одного и того же m.
То, что вы, кажется, смущены, это разные варианты дизайна API.В частности, кто может выбрать соль.Каждый раз, когда хэшируется новый пароль m (например, для ввода в базу данных), должна быть выбрана свежая равномерно случайная соль s, а затем вычисляется значение хеша h: = H (m, s) и сохраняются оба значения h и s.в базе данных.Всякий раз, когда кто-то, претендующий на то, чтобы быть тем же пользователем, отправляет пароль m 'для аутентификации, происходит то, что (h, s) извлекается и проверяется, является ли h = H (m', s).
ТеперьВопрос в том, кто выбирает соль.Похоже, что знакомые вам API не доверяют пользователю.Поэтому, когда вы вызываете хэш-пароль m, библиотека выберет соль s, вычислит h и выведет h '= (h, s) в качестве «значения хеша».Чтобы проверить, верен ли пароль m ', вы затем отправляете h', m ', и библиотека извлекает соль, пересчитывает хеш и сравнивает.
Библиотека, которую вы сейчас просматриваете, ожидает, что пользователь выберетсоль.То есть каждый раз, когда вы создаете новую запись в базе данных паролей , вам приходится выбирать новую соль, вычислять h = H (m, s) и сохранять обе (h, s).Поскольку библиотека в этом случае не пытается «что-то скрыть» от вас, вам нужно позаботиться о сравнении.