BCrypt.net有几个不同的端口,很难说哪个是“最好的”。
是否有人花时间审阅这些内容并得出任何关于哪个项目光顾的结论?我最感兴趣的是哪个开发者社区最活跃。当然,功能集,有效性,简单性和文档也很好:)
以下是我能够追踪的BCrypt.Net实施列表:
据我所知,这是第一个端口,并且暂时没有更新。版本0.1
用户将Derek Slager的副本发布到谷歌代码并做了一些改进。版本0.3
Visual Studio唯一的NuGet版本,它是一个没有源代码的编译副本,因此我无法确切了解它。它似乎支持仅在版本0.3 Google Code版本中提供的新功能。它没有列出任何支持网站,我不知道它是否是开源的,没有任何归属(有点粗略)。版本1.0,213下载。
这似乎是一个完全独立的港口,与Derek Slager的港口无关。它似乎有一些半定期的更新。版本R5,140下载。
此列表是否完整?是否有理由选择其中一个?
答案 0 :(得分:4)
最初于2013年2月对这些内容进行了审核,并根据Justin和Coulton的评论进行了更新,并反映了我目前的使用情况。
最近的这些似乎是安全的,或者至少是“没有已知的错误”。 (bcrypt
还有其他弱点,但它们是算法而不是代码相关。我假设如果您使用bcrypt
,那么您已经了解这些。)
问题中列出的库都是基于jBCrypt代码(CryptSharp除外,不知道),它在2010年2月收到错误修复以修复“弱熵”安全建议。 (http://www.mindrot.org/files/jBCrypt/internat.adv)
细分:
粗略的时间表,基于修订控制更改日志:
我目前正在使用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/