Я изучал эту тему немного больше:
Вот описание функции склепа () из PHP руководства, который был указан в статье "Использование Bcrypt Дурак":
Описание
Строка крипты (строка $ Обл [, строка $ соль])
крипты () возвращает хэш строку, используя стандартный алгоритм Unix DES на основе или альтернативные алгоритмы, которые могут быть доступны в системе.
Некоторые операционные системы поддерживают более одного типа хэш. На самом деле, иногда стандартный алгоритм DES на основе заменяется с помощью алгоритма MD5 на основе. Тип хеш-инициируется солевого аргумента. До 5.3, PHP будет определять доступные алгоритмы при установке времени на основе склепа системы (). Если соль не предусмотрена, PHP будет автоматически генерировать либо стандартную два символа (DES) соль, или двенадцать символов (MD5), в зависимости от наличия MD5 склепа (). PHP устанавливает константу с именем CRYPT_SALT_LENGTH, который указывает на самый длинный действительный соль разрешенную доступных хэшей.
Стандарт DES на основе крипта () возвращает соль в качестве первых двух символов на выходе. Он также использует только первые восемь символов ул, так что более длинные строки, которые начинаются с тех же восьми символов будет генерировать один и тот же результат (если используется та же соль).
В системах, где функция крипты () поддерживает несколько типов хэша, следующие константы устанавливаются в 0 или 1 в зависимости от того, доступен ли данный типа:
CRYPT_STD_DES - Стандарт DES на основе хэш с два символа соли из алфавита "./0-9A-Za-z", Использование недопустимых символов в соли приведет к склепу (), чтобы потерпеть неудачу.
CRYPT_EXT_DES - Extended хэш DES основе. "поваренная соль" 9 символов строка, состоящая из символа подчеркиваний следует 4 байта счетчика итерации и 4 байта соли. Они кодируются как печатаемые символы, 6 бит на символ, наименее значимый характер в первую очереди. Значения от 0 до 63 кодируются как "./0-9A-Za-z", Использование недопустимых символов в соли приведет к склепу (), чтобы потерпеть неудачу.
CRYPT_MD5 - MD5 хеширования с солью двенадцати символов, начиная с $ 1 $
CRYPT_BLOWFISH - Blowfish хеширования с солью следующим образом: "$ 2a $", Параметр стоимости две цифры, "$"и 22 цифры от алфавита "./0-9A-Za-z", Использование символов за пределами этого диапазона в соли вызывает склеп (), чтобы вернуть строку нулевой длины. Параметр Стоимость двух цифр является базовой 2-логарифм Количество итераций для базового Blowfish на основе хеширования algorithmeter и должна быть в диапазоне 04-31, Значения вне этого диапазона приведут к склепу (), чтобы потерпеть неудачу.
CRYPT_SHA256 - SHA-256 хэш с шестнадцатью соли символов с префиксом $ 5 $. Если строка начинается с солью «округляется =$», Числовое значение N используется, чтобы указать, сколько раз должен быть выполнен цикл хеширования, так же, как параметр затрат на Blowfish. Количество раундов по умолчанию 5000, есть минимум 1000 и максимум 999.999.999. Любой выбор N вне этого диапазона будет обрезан до ближайшего предела.
CRYPT_SHA512 - SHA-512 хэш с шестнадцати символов соли с приставкой $ 6 $. Если строка соли начинается с «округляется =$», Числовое значение N используется, чтобы указать, сколько раз должен быть выполнен цикл хеширования, так же, как параметр затрат на Blowfish. Количество раундов по умолчанию 5000, есть минимум 1000 и максимум 999.999.999. Любой выбор N вне этого диапазона будет обрезан до ближайшего предела.
Тогда в основном то, что крипта () функция делает, это несколько соленых раундов хэширования.
Так может кто-нибудь объяснить мне, в чем разница между Bcrypt и моим алгоритмом?
hash_algo1 (salt1 + hash_algo2 (salt2 + hash_algo3 (salt3 + данные))) * N рекурсивные раундов
Потому что, если серьезно - я не могу найти.