Answers:
听起来您正在寻找BCrypt.net:
BCrypt.net是OpenBSD基于Blowfish的密码哈希码的实现,在Niels Provos和DavidMazières的“未来适应密码方案”中进行了描述。它是Damien Miller的jBCrypt的直接端口,因此以相同的BSD样式许可发布。该代码是完全托管的,并且可以与任何低端CLI实施一起使用-已通过Microsoft .NET和Mono进行了测试。
BCrypt.Net目前似乎是最受欢迎的图书馆
这是一个如何使用它来哈希密码的示例:
[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
您可以在此处找到BCrypt for .Net的更新实现:http ://bcrypt.codeplex.com/
将某些东西从PostgreSQL(具有pg_crypto)移到SQLite(没有)时,我需要BCrypt实现,所以我写了自己的东西。看到此消息后,我不是唯一需要此消息的人,因此决定对它拍一个许可证并释放它。网址是:
http://zer7.com/software.php?page=cryptsharp
它背后的Blowfish实现是Bruce Schneier的公共领域C实现的一部分,并且在所有官方测试向量上都成功。
我根据规范编写了自己的BCrypt代码。我还创建了一个PHP脚本,该脚本生成长度为0到100的随机密码和盐,将其加密,然后将其输出到测试文件。到目前为止,C#代码与这100%的时间匹配。欢迎您使用脚本并自己进行测试。
该库还包括PBKDF2代码,该代码可用于任何HMAC,而不是.Net的SHA-1实施(今天添加了-我打算尽快用C#进行SCrypt,并且需要具有HMAC-SHA256的PBKDF2)。如果需要,您也可以基于此制定一个方案。
答案错误,请参阅下文
.Net Framework中的所有“ Cng”(下一代密码学)后缀算法现在都使用bcrypt。例如SHA256Cng。
实际上,MS BCrypt(BestCrypt)并不是指基于Blowfish密码的密码-谢谢RobbyD的评论。
万一其他人也有同样的困惑,将不会删除答案。
您是否尝试过此MS BCryptCreateHash C ++函数?似乎可以从Windows Server 2008和Windows Vista中获得。
另外,您也许也可以检查以下MS C#BCryptNative.cs类。