B-Crypt — адаптивная криптографическая хеш-функция используемая для защищенного хранения паролей.
Разработчики: Niels Provos и David Mazières.
Функция основана на шифре Blowfish, впервые представлена на USENIX в 1999 году.
Шифр Blowfish отличается от многих алгоритмов вычислительно сложной фазой подготовки ключей шифрования.
Provos и Mazières воспользовались этой особенностью, но изменили алгоритм подготовки ключей, получив шифр «Eksblowfish» (expensive key schedule Blowfish). Количество раундов в подготовке ключей должно быть степенью двойки; конкретная степень может задаваться при использовании bcrypt.

Криптостойкость


BCrypt работает гораздо медленнее других методов хэширования, но его результат защищён гораздо сильнее. Чем больше времени занимает шифрование, тем дольше будет длиться расшифровка. Популярный метод MD5 вычисляется настолько быстро, что на обычном ноутбуке можно вычислять десятки тысяч хэшей в секунду. А на мощном сервере — сотни тысяч и миллионы.
Для защиты от атак с помощью радужных таблиц bcrypt использует соль (salt); кроме того функция является адаптивной, время ее работы легко настраивается и ее можно замедлить, чтобы усложнить атаку перебором.

Функция нахождения хэша MD5 с солью имеет, например, такой вид:
MD5(MD5(password)+salt)
Сначала находится хэш слова, являющегося паролем. К этому хэшу дописывается соль (случайный набор симолов, уникальный для каждого пользователя) и от сочетания «хэш пароля + соль» снова находится хэш, который будет храниться в базе данных. Соль хранится в той же базе данных и используется для вычисления хэша каждый раз, когда пользователь логинится.




http://www.pvsm.ru/shifrovanie/9218
http://ru.wikipedia.org/wiki/Bcrypt