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

Mas*_*ler 10 windows winapi windows-vista cng

这可能听起来像一个奇怪的问题,我实际上不得不问这个问题感觉有点奇怪,但是花了几个小时查看MSDN文档以了解bcryptVista中添加的例程,我几乎得出结论:没有实际的bcrypt支持!

根据维基百科:

bcrypt是一个基于Blowfish密码的密码的自适应加密哈希函数...除了结合盐来防止彩虹表攻击之外,bcrypt是一个自适应哈希:随着时间的推移,它可以变得越来越慢,所以它仍然具有抵抗力针对哈希和盐的特定暴力搜索攻击.

但是,从MSDN上的文档来看,"bcrypt"库显然实际上是加密和散列的通用接口.您必须通过BCryptOpenAlgorithmProvider函数获取"算法提供程序"的句柄,该函数有几个内置算法可供选择.但是"河豚"这个词并没有出现在名单的任何地方.

我错过了什么吗?我读错了吗?或者Windows的"bcrypt"库实际上不支持bcrypt吗?

Ian*_*oyd 8

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

密码学API:下一代(Cng)

它是在实施的bcrypt.dll.

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

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

SHA256Cng类

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

无论如何,有趣的是.NET框架通常可以为每种加密算法提供三种实现.例如,对于SHA2散列,有:

精简版

不,bcryptbestcrypt的缩写.并且,不,它不支持bcrypt(blowfish crypt)密码散列.


Joh*_*ohn 5

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