BCrypt.net 有几个不同的端口,很难判断哪个是“最好的”。
是否有人花时间对其进行审查并得出关于资助哪个项目的结论?我最感兴趣的是哪个拥有最活跃的开发者社区。当然,功能集、有效性、简单性和文档也很好:)
以下是我能够追踪到的 BCrypt.Net 实现的列表:
据我所知,这是第一个端口,并且已经有一段时间没有更新了。版本0.1
用户将 Derek Slager 的副本发布到 Google 代码并进行了一些改进。版本0.3
Visual studio 唯一的 NuGet 版本,它是一个没有源代码的编译副本,所以我无法确定它的任何信息。它似乎确实支持仅在 0.3 版 Google Code 版本中可用的新功能。它没有列出任何支持站点,我无法判断它是否是开源的并且没有任何类型的归属(有点粗略)。 1.0 版,213 次下载。
这似乎是一个完全独立的移植,与 Derek Slager 的移植无关。它似乎有一些半定期更新。 R5 版本,140 次下载。
这个列表完整吗?有什么理由选择其中之一吗?
最佳答案
最初于 2013 年 2 月审查了这些内容,并根据 Justin 和 Coulton 的评论中的信息进行了更新,并反射(reflect)了我当前的使用情况。
最近的这些似乎是安全的,或者至少“没有已知的错误”。 (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-Official/)。
- CryptSharp (http://www.zer7.com/software/cryptsharp) 是一个活跃的、受支持的项目,看起来做得非常好,但我还没有深入评估它。绝对值得一看。也可以在 NuGet (http://www.nuget.org/packages/CryptSharpOfficial/) 上找到。
- Google 代码版本变更日志表明它包含 2010 年 2 月的“jBCrypt”错误修复。但这已经是一种古老且消亡的方式了。
- Derek Slager 的 2007 版本可能 **没有** 有这些修复,我认为您应该避免使用它。
粗略的时间表,基于修订控制更改日志:
- Derek Slager 于 2007 年移植了 jBCrypt
- 该代码已导入 Google 代码并于 2010 年 10 月进行了一些更新。
- Ryan D. Emerle 的 Codeplex 代码以更高版本的 jBCrypt 作为源代码(2010 年末)。此导入的日期是在 Google 代码版本的最后一次更改之后。此内容已于 2013 年 11 月更新为最新来源。
- CryptSharp 最初于 2010 年 11 月发布,至今(2014 年 12 月)定期发布。从头开始写?
我目前使用的是 Codeplex
版本,因为它似乎得到了维护,并且在 Google 搜索结果中较早出现。
关于 2011 年 crypt_blowfish
bug:(j)BCrypt.net 是算法的独立实现,不依赖于 unix crypt_blowfish
库。所以它根本不应该受到影响。不过,早该重写以支持 $2y$ 格式。
关于.net - 首选 BCrypt.Net 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600541/