BCrypt в PostgreSQL | Разные версии (2a и 2b) работают с одинаковым хэшем

Мой бэкэнд работает с алгоритмом версией 2b. Сейчас мне понадобилось сверять хэши прямо в базе. И тут оказалось, что pgcrypto работает с алгоритмом версией 2a (я даже сначала не понял почему не пропускает).

После я попробовал взять тот же хэш, поменять в нём версию, и он прошёл проверку!

SELECT public.crypt('#5656243lolkek243wV#', '$2a$12$CSXLdzf7kZS7i9/qDpZbS.bS5fcf7HXCUO.j5CPCBvIEjUcOs48Py') = '$2a$12$CSXLdzf7kZS7i9/qDpZbS.bS5fcf7HXCUO.j5CPCBvIEjUcOs48Py'

 ?column?
----------
 t
(1 строка)

Причём учтите, что я просто поменял b на a в хэше! В связи с этим два вопроса:

  1. Как всё-таки оставить 2b на бэкэ и использовать 2a из pgcrypto?
  2. Почему хэш 2b пропускается в 2a?

Ответы (0 шт):