Поддерживает ли winapi bcrypt.h хеширование bcrypt? - PullRequest
8 голосов
/ 15 марта 2012

Это может звучать как странный вопрос, и мне кажется немного странным, что я действительно должен это задать, но, потратив пару часов на просмотр документации MSDN для подпрограмм bcrypt, которые были добавлены в Vista, я 'Мы почти пришли к выводу, что в действительности нет поддержки bcrypt!

Согласно Википедии:

bcrypt - это адаптивная криптографическая хеш-функция для паролей ... основанная на шифре Blowfish... Помимо включения соли для защиты от атак на радужные таблицы, bcrypt является адаптивным хэшем: со временем его можно делать все медленнее и медленнее, поэтому он остается устойчивым к определенным атакам с использованием грубой силы поиска по хешу и соли.

Однако из документации по MSDN библиотека "bcrypt", по-видимому, на самом деле является универсальным интерфейсом для шифрования и хеширования.Вы должны получить дескриптор «поставщика алгоритмов» через функцию BCryptOpenAlgorithmProvider , в которой есть несколько встроенных алгоритмов на выбор.Но слово «рыба-выдуватель» нигде в списке не появляется.

Так я что-то упустил?Я читаю это неправильно?Или библиотека Windows "bcrypt" на самом деле вообще не поддерживает bcrypt ?

Ответы [ 2 ]

6 голосов
/ 03 мая 2015

В контексте MSDN BCrypt является краткой формой "BestCrypt" , но имя PR для него:

API шифрования: следующее поколение(Cng)

Это реализовано в bcrypt.dll.

BestCrypt / BCrypt / Cng является преемником более старого CryptoAPI .

Microsoft медленно удаляет ссылки на "BestCrypt" со своего сайта,но вы все еще можете увидеть его на некоторых страницах, таких как:

SHA256Cng Класс

Этот алгоритм предназначен только для хеширования и не обеспечивает шифрование или дешифрование.Он использует слой BCrypt (BestCrypt) CNG.

Интересно (во всяком случае, мне), что .NET Framework обычно может предоставить вам три реализации для каждого вида криптоалгоритма.Например, для хэширования SHA2 существует:

  • SHA256Managed : реализация, написанная исключительно в управляемом коде
  • SHA256CryptoServiceProvider : оболочка для реализации собственного поставщика услуг шифрования (CSP)
  • SHA256Cng : оболочка для криптографии следующего поколения) реализация

Короткая версия

Нет, bcrypt - сокращение от bestcrypt .И, нет, он не поддерживает хеширование паролей bcrypt (blowfish crypt).

4 голосов
/ 16 марта 2012

API BCrypt являются общими и поддерживают различные криптографические алгоритмы хэширования, но bcrypt не является одним из них. Префикс B, по-видимому, является просто способом отличить старые API от следующего поколения.

...