winapi的bcrypt.h实际上是否支持bcrypt哈希?

这可能听起来像一个奇怪的问题,而且我真的不得不问这个问题有点奇怪,但花了几个小时看了一下Vista中添加的bcrypt例程的MSDN文档后,我几乎得出结论没有实际的bcrypt支持!

根据维基百科:

bcrypt是一个自适应密码哈希函数密码…基于Blowfish密码…除了结合盐来防止彩虹表攻击,bcrypt是一个自适应哈希:随着时间的推移,它可以变得越来越慢,所以它仍然耐药针对散列和盐的特定的powershellsearch攻击。

但是,从MSDN上的文档来看,“bcrypt”库显然实际上是用于encryption和散列的通用接口。 您必须通过BCryptOpenAlgorithmProvider函数获取“algorithm提供者”的句柄 ,该函数有几个内置algorithm可供select。 但是“河豚”一词并没有出现在列表中的任何地方。

所以我错过了什么? 我读这个错吗? 或者Windows的“bcrypt”库实际上不支持bcrypt

Solutions Collecting From Web of "winapi的bcrypt.h实际上是否支持bcrypt哈希?"

BCrypt API是通用的并且支持各种加密哈希算法,但是bcrypt不是其中之一。 B前缀似乎只是区分旧的API和下一代的一种方式。

在MSDN的上下文中,BCrypt是“BestCrypt”的缩写,但PR的名称是:

加密API:下一代(Cng)

它在bcrypt.dll实现。

BestCrypt / BCrypt / Cng是旧版CryptoAPI的继承者。

微软正在慢慢地从他们的网站上删除对“BestCrypt”的引用,但是你仍然可以在一些页面上看到它:

SHA256Cng类

该算法仅用于散列,并不提供任何加密或解密。 它使用BCrypt(BestCrypt)图层CNG。

无论如何,对我来说很有意思的是,.NET框架通常可以为您提供三种实现,用于各种加密算法。 例如,对于SHA2哈希,有:

  • SHA256Managed :纯粹用托管代码编写的实现
  • SHA256CryptoServiceProvider :本地加密服务提供程序(CSP)实现的一个包装
  • SHA256Cng :加密下一代(Cng)实现的一个封装

简洁版本

不, bcryptbestcrypt的缩写。 而且,不,它不支持bcrypt(blowfish crypt)密码哈希。