10

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

根据维基百科:

bcrypt 是一种用于密码的自适应加密散列函数……基于 Blowfish 密码……除了加入盐以防止彩虹表攻击之外,bcrypt 还是一种自适应散列:随着时间的推移,它可以变得越来越慢,因此它仍然具有抵抗力针对哈希和盐的特定蛮力搜索攻击。

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

所以我错过了什么吗?我读错了吗?还是 Windows 的“bcrypt”库实际上根本不支持 bcrypt

4

2 回答 2

8

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

密码学 API:下一代 (Cng)

它在bcrypt.dll.

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

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

SHA256Cng 类

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

有趣的是(无论如何对我来说).NET 框架通常可以为每种加密算法提供三种实现。例如,对于 SHA2 哈希,有:

精简版

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

于 2015-05-03T13:19:33.610 回答
4

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

于 2012-03-16T16:00:49.240 回答