. net 实现 bcrypt

是否有人知道一个很好的实现 bcrypt,我知道这个问题已经被问过,但它得到了很少的回应。我有点不确定,只是选择一个实现,出现在谷歌和我认为,我可能会更好地使用 sha256在系统中。保安。加密名称空间,至少我知道它是支持的!你在想什么?

31947 次浏览

听起来你在寻找 BCrypt.net:

Net 是 OpenBSD's Blowfish-based password hashing code, described in "A 未来可自适应的密码方案」 - Niels Provos 和 David Mazières-没错 由 Damien 设计的 jBCrypt 的直接端口 米勒,因此被释放 同样的 BSD 样式的许可证 完全管理,并应与任何 Little-endian CLI 实现——它 已经用微软.NET 进行了测试 还有单核细胞增多症。

您可以在这里找到 BCrypt for.Net 的更新实现: Http://bcrypt.codeplex.com/

当从 PostgreSQL (有 pg _ crypto)移动一些东西到 SQLite (没有 pg _ crypto)时,我需要一个 BCrypt 实现,所以我编写了自己的。看到这条信息,我不是唯一一个需要它的人,我决定在它上面贴一个许可证,然后发布它。网址是:

http://zer7.com/software.php?page=cryptsharp

The Blowfish implementation behind it is a port of Bruce Schneier's public domain C implementation, and succeeds on all the official test vectors.

The BCrypt code I wrote myself based on the spec. I also created a PHP script which generates random passwords of length 0 to 100 and salts, crypts them, and outputs them to a test file. The C# code matches these 100% of the time so far. You are welcome to use the script and test this yourself.

该库还包括 PBKDF2代码,该代码适用于任何 HMAC。Net 的仅 SHA-1实现(今天添加的——我打算很快在 C # 中进行 SCcrypt,这需要带有 HMAC-SHA256的 PBKDF2)。如果你愿意的话,你也可以根据这个为自己制定一个计划。

BCrypt.Net seems to be a most popular library at this moment

Http://bcrypt.codeplex.com/

下面是一个如何使用它散列密码的例子:

[TestMethod]
public void BCryptTest()
{
const string password = "PASSWORD";
const int workFactor = 13;


var start = DateTime.UtcNow;
var hashed = BCrypt.Net.BCrypt.HashPassword(password, workFactor);
var end = DateTime.UtcNow;


Console.WriteLine("hash length is {0} chars", hashed.Length);
Console.WriteLine("Processing time is {0} with workFactor {1}", end - start, workFactor);
Console.WriteLine("Hashed password: {0} ", hashed);
Console.WriteLine("correct password {0}", BCrypt.Net.BCrypt.Verify("PASSWORD", hashed));
Console.WriteLine("incorrect password {0}", BCrypt.Net.BCrypt.Verify("PASSWORd", hashed));
}

输出样本:

hash length is 60 chars
Processing time is 00:00:01.0020000 with workFactor 13
Hashed password: $2a$13$iBqdG7ENBABEargiyzGlTexPsmviF/qrFxUZB2zce7HKF6MoBNhEq
correct password True
incorrect password False

你有没有试过这个 MS BCryptCreateHash C++ function也许? ? 似乎是从 WindowsServer2008和 WindowsVista 目前。

Also, you can probably check the following MS C # BCryptNative.cs class too perhaps.

错误答案,请看下面

在.Net 框架中的所有“ Cng”(加密下一代)后缀算法现在都使用 bcrypt。


实际上 MS BCrypt (BestCrypt)并不是指基于 Blowfish 密码的那个——谢谢 RobbyD 的评论。
不会删除答案,只是以防其他人造成同样的困惑。