Поддерживает ли Winapi bcrypt.h хеширование с помощью bcrypt?

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

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

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

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

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


person Mason Wheeler    schedule 14.03.2012    source источник
comment
Скорее похоже, что bcrypt - это кодовое имя для API криптографии следующего поколения в Windows, и оно не связано с описанной вики функцией bcrypt.   -  person Roman R.    schedule 15.03.2012


Ответы (2)


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

API криптографии: новое поколение (Cng)

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

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

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

Класс SHA256Cng

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

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

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

Укороченная версия

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

person Ian Boyd    schedule 03.05.2015

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

person John    schedule 16.03.2012