问题标签 [bcrypt.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
58269 浏览

c# - BCrypt 是在 C# 中使用的一个很好的散列算法吗?我在哪里可以找到它?

我读过在散列密码时,许多程序员建议使用 BCrypt 算法。

我正在用 C# 编程,想知道是否有人知道 BCrypt 的良好实现?我找到了这个页面,但我真的不知道它是否是假的。

选择密码哈希方案时应该注意什么?BCrypt 是一个“好的”实现吗?

0 投票
6 回答
30083 浏览

.net - bcrypt 的 .net 实现

有谁知道 bcrypt 的一个很好的实现,我知道这个问题之前已经被问过,但它得到的回应很少。我有点不确定是否只是选择在 google 中出现的实现,并且我认为在 System.Security.Cryptography 命名空间中使用 sha256 可能会更好,至少那时我知道它是受支持的!你有什么想法?

0 投票
2 回答
6264 浏览

c# - 为什么 BCrypt.net GenerateSalt(31) 会立即返回?

在阅读了 Jeff Atwood 关于存储密码的帖子后,我偶然发现了 BCrypt.net,这让我想到了 Thomas Ptacek 建议使用 BCrypt来存储密码。这最终让我想到了 BCrypt 的这个 C# 实现

在上面最后一个链接的评论中,有人问“为什么 GenerateSalt(30) 永远需要,但 GenerateSalt(31) 似乎根本不需要时间?”

我运行了 BCrypt.HashPassword(password, BCrypt.GenerateSalt(31)) 并在 0 毫秒内得到了结果。

我已经运行 BCrypt.HashPassword("password", BCrypt.GenerateSalt(30)) 超过 5 分钟,但仍然没有结果。

我意识到多年来我们可能不需要随机生成的 30 个字符的盐来创建我们的密码哈希(或BCrypt 的不可逆加密)。编辑我应该稍微阅读一下代码,logRounds 与盐长度没有任何关系。谢谢阿罗诺特。

那么,为什么 GenerateSalt(31) 几乎会立即返回一个值(而它需要的时间大约是 GenerateSalt(30) 的两倍?

更新

这是修复:

0 投票
1 回答
659 浏览

c# - jBCrypt 0.3 C# 端口 (BCrypt.net)

在查看原始 jBCrypt v0.1 C# 端口中的错误后:BCrypt.net相关问题)。我决定将新的 jBCrypt 代码与旧的 C# 端口进行比较,以查找差异和潜在问题,例如相关问题的错误。

这是我发现的:

如果先验不正确,下面会修复它吗?

0 投票
2 回答
3137 浏览

c# - 在哪里可以找到有关 BCrypt for .NET 的文档?

我使用 NuGet 来获取 BCrypt 库并正确安装。现在我想了解它以及如何使用它,但我似乎找不到任何文档。

即使搜索库命名空间也没有结果:

关于在哪里可以找到一些示例,甚至是普通的旧文档的任何建议?我正在使用 C#。

0 投票
2 回答
17986 浏览

c# - 有人可以解释 BCrypt 如何验证哈希吗?

我正在使用 C# 和 BCrypt.Net 来散列我的密码。

例如:

如果 BCrypt 没有在任何地方保存盐,它如何使用哈希验证密码。我唯一的想法是它以某种方式在哈希末尾添加了盐。

这是一个正确的假设吗?

0 投票
3 回答
2528 浏览

.net - 首选 BCrypt.Net 实现

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

有没有人花时间审查它们并就光顾哪个项目得出任何结论?我最感兴趣的是哪个拥有最活跃的开发者社区。当然,功能集、有效性、简单性和文档也很好:)

这是我能够追踪到的 BCrypt.Net 实现列表:

德里克·斯莱格

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

谷歌代码

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

NuGet

Visual Studio 唯一的 NuGet 版本,它是一个没有源代码的编译副本,所以我无法确定它的任何信息。它似乎支持仅在 0.3 版 Google 代码版本中可用的新功能。它没有列出任何支持站点,我不知道它是否是开源的并且没有任何类型的归属(有点粗略)。1.0 版,213 次下载。

代码丛

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

这份清单是否完整?有什么理由选择一个而不是另一个吗?

0 投票
1 回答
2014 浏览

.net - bcrypt的.Net实现,它实现了HashAlgorithm?

我希望在我的身份验证库中允许 bcrypt 支持。现在的问题之一是我假设 hasher 将是 type HashAlgorithm。Bcrypt.net 没有实现这个类。此外,它是密封的,所以我必须自己制作分支并自己修改它。有没有更好的替代方案已经实现了 HashAlgorithm?

0 投票
3 回答
3839 浏览

c# - 在 C# ASP.NET 中添加自定义 hashAlgorithmType

我有一个页面需要加强安全性。我正在使用内置的 MembershipProvider 功能,目前已hashAlgorithmType设置为 SHA512。我有 BCrypt.NET 库(http://bcrypt.codeplex.com/),当我从代码中调用它的函数时,它似乎工作得很好,但我在弄清楚如何创建适当的<cryptographySettings>Web.config 中的部分让我创建一个hashAlgorithmType.

我在网上找到了以下代码片段:

如果你愿意,可以称我为菜鸟,但我显然没有必要的知识来做出正面或反面。我所需要的只是一种方法来告诉会员提供者类似的东西<hashAlgorithmType="bcrypt">对应于类似string hashed = BCrypt.HashPassword(password, BCrypt.GenerateSalt(12));加密和bool matches = BCrypt.CheckPassword(candidate, hashed);解密的东西。请告诉我有一个简单的答案。如果必须,我可以从头开始重写登录系统,但我已经有了一个工作实现,我真的很想改变它的哈希算法。

0 投票
1 回答
623 浏览

asp.net - BCrypt 哈希密码在数据库中被截断

我正在使用 BCrypt 的 .Net 实现将密码存储在数据库中。密码列是 VARCHAR(MAX)

这是通过存储过程更新密码的代码:

对于某些用户,密码会被截断。截断后的一个例子是:$2a$12$XM2

情况并非总是如此。

请帮助我了解可能导致截断的原因?

更新:

下面是调用 SP 更新密码的 C# 代码: