首选BCrypt.Net实现

时间:2011-04-08 20:39:18

标签: .net bcrypt bcrypt.net

BCrypt.net有几个不同的端口,很难说哪个是“最好的”。

是否有人花时间审阅这些内容并得出任何关于哪个项目光顾的结论?我最感兴趣的是哪个开发者社区最活跃。当然,功能集,有效性,简单性和文档也很好:)

以下是我能够追踪的BCrypt.Net实施列表:

Derek Slager

据我所知,这是第一个端口,并且暂时没有更新。版本0.1

Google Code

用户将Derek Slager的副本发布到谷歌代码并做了一些改进。版本0.3

NuGet

Visual Studio唯一的NuGet版本,它是一个没有源代码的编译副本,因此我无法确切了解它。它似乎支持仅在版本0.3 Google Code版本中提供的新功能。它没有列出任何支持网站,我不知道它是否是开源的,没有任何归属(有点粗略)。版本1.0,213下载。

Code Plex

这似乎是一个完全独立的港口,与Derek Slager的港口无关。它似乎有一些半定期的更新。版本R5,140下载。

此列表是否完整?是否有理由选择其中一个?

3 个答案:

答案 0 :(得分:4)

最初于2013年2月对这些内容进行了审核,并根据Justin和Coulton的评论进行了更新,并反映了我目前的使用情况。

最近的这些似乎是安全的,或者至少是“没有已知的错误”。 (bcrypt还有其他弱点,但它们是算法而不是代码相关。我假设如果您使用bcrypt,那么您已经了解这些。)

问题中列出的库都是基于jBCrypt代码(CryptSharp除外,不知道),它在2010年2月收到错误修复以修复“弱熵”安全建议。 (http://www.mindrot.org/files/jBCrypt/internat.adv

细分:

     
  • BCrypt的Codeplex端口于2010年底启动(12月检查),并于2013年更新到更新的来源。几乎可以肯定是安全的,可以在NuGet上获得(https://www.nuget.org/包/ BCrypt官方/).
  •  
  • CryptSharp(http://www.zer7.com/software/cryptsharp)是一个活生生的,支持的项目,看起来做得很好,但我还没有深入评估它。绝对值得一试。也可在NuGet上获取(http://www.nuget.org/packages/CryptSharpOfficial/)。
  •  
  • Google Code版本更新日志表明它包含了2010年2月的`jBCrypt`错误修复程序。但那有点古老而且死了。
  •  
  • Derek Slager的2007端口可能不会**有这些修复,我认为你应该避免它。

粗略的时间表,基于修订控制更改日志:

  1. Derek Slager于2007年成为jBCrypt的一个港口
  2. 这已导入Google Code并于2010年10月更新。
  3. Ryan D. Emerle编写的Codeplex代码以jBCrypt的更新版本作为源代码(2010年末)开始。此导入日期*在Google代码版本的最后一次更改之后。这已于2013年11月更新至最新来源。
  4. CryptSharp最初于2010年11月发布,目前定期发布(2014年12月)。从头开始写?
  5. 我目前正在使用Codeplex版本,因为它似乎得到维护,并且在谷歌搜索结果的早期出现。

    关于2011 crypt_blowfish错误:(j)BCrypt.net是算法的独立实现,不依赖于unix crypt_blowfish库。所以它根本不应该受到影响。但是,为了支持$ 2y $格式的重写,它已经过期了。

答案 1 :(得分:2)

不幸的是,截至2012年10月4日,我认为上面列出的算法都不够。根据这篇文章(http://en.wikipedia.org/wiki/Crypt_(Unix)),2011年在算法中发现了一个缺陷。正确的bcrypt哈希现在应该以$ 2y $而不是$ 2a $开头。 我自己一直在寻找算法。

答案 2 :(得分:1)

说实话,我已经使用了你列出的三个中的两个,除了方法名之外我没有发现任何区别。他们似乎做了同样的事情。

我更喜欢使用NuGet包,因为它与现有项目集成更简单。我甚至写了一篇关于如何使用NuGet包管理器完成此任务的小文章。

http://sergiotapia.com/2011/03/using-bcrypt-in-a-net-application-why-its-better-than-sha-or-md5/