问题标签 [bcrypt]

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 投票
10 回答
20267 浏览

ruby-on-rails - 为什么我会收到 bcrypt-ruby gem 安装错误?

尝试安装 gem 设计时出错,安装在 gem bcrypt-ruby 上停止:

我在 RVM 下使用 Ruby 运行 OSX 10.6.7。我重新安装了最新版本的 xcode 并重新安装了 Ruby 64 位、Rails 和所有的 gem。

0 投票
1 回答
4536 浏览

ruby-on-rails - bcrypt盐可以单独访问吗?

在 Rails 3.1 中使用has_secure_password时,bcrypt 会为每个用户的密码随机生成一个 salt。基于此响应,我了解盐存储为密码哈希的一部分。是否有可用于单独访问该盐的方法或属性,例如用于编写安全 cookie?

0 投票
3 回答
1421 浏览

asp.net-mvc - ASP.NET MVC 3 应用程序,BCrypt.CheckPassword 失败

我正在努力在 ASP.NET MVC 3 应用程序中实现安全性,并且正在使用此处找到的 BCrypt 实现来处理密码的加密和验证。用户注册屏幕对用户提供的密码进行了很好的加密,散列后的密码被保存到数据库中。我在登录页面上的密码验证出现问题,我似乎无法弄清楚原因。

我的注册控制器操作包含以下内容:

这是密码。哈希:

这就是我处理登录的方式:

CredentialsAreValid 包装了对 BCrypt.CheckPassword 的调用:

密码。比较:

最后,这就是 BCrypt.CheckPassword 正在做的事情:

所以,是的......我不知道发生了什么,但我知道的是,我authorized的登录控制器操作中的布尔变量由于某种原因总是返回 false。

我过去至少在其他几个项目中使用过这个完全相同的 BCrypt 类,而且从来没有遇到过任何问题。ASP.NET MVC 3 是否对我丢失或需要以不同方式处理的已发布数据进行了一些奇怪的、不同的编码?是这样,还是 SQL CE 4 正在这样做(这是我当前使用的数据存储)?据我所知,我的代码中的一切似乎都是有序的,但由于某种原因,密码检查每次都失败。有人有想法么?

谢谢。

更新:这是包含在 BCrypt 类中的代码注释以及它的使用和工作示例。

0 投票
1 回答
3924 浏览

encryption - 使用弱密码 bcrypt 或 SHA-256 + AES-256 加密文件?

我从一个弱密码(ex 为 8 个小写字符)和一个文件开始。我需要使用该密码加密该文件。结果必须能够抵御已知的攻击。

方法 1:我可以使用 SHA-256 对密码进行哈希处理,然后使用生成的哈希和文件作为 AES-256 的输入,从而得到一个加密文件。我知道 SHA-256 和 AES-256 都非常快。这不会使文件容易受到暴力攻击吗?

例如,是否可以抓取一个预先计算的 SHA-256 哈希表,并假设它是一个非常小的文件和一个非常弱的密码,尝试在合理的时间内使用该表中的每个哈希进行 AES-256 解密(几个个月使用专门的硬件)。

方法 2:使用 bcrypt。如果我理解正确,bcrypt 比 SHA-256 + AES-256 更适合加密文件,因为它的密钥生成方案有一个工作因素,可以产生更强的密钥。还是我错了?

我见过的 Ruby 和 Python 实现(包装器?)专注于使用 bcrypt 作为密码的散列方案,而不是密码本身。我什至可以使用 bcrypt 来散列弱通行证并“一步”加密文件吗?

方法 3:使用 bcrypt 对 pass 进行散列,使用该散列和文件作为 AES-256 的输入,给我加密文件。这解决了“生成密钥太快”的问题。(假设它是一个问题。)但是,bcrypt 哈希是 448 位长,而 AES-256 需要一个 256 位的密钥。天真的解决方案是简单地删除散列的尾随位并将其用作 AES-256 的密钥。我不会走这条路,因为我对密码学知之甚少,不知道后果是什么。

编辑:我不能给通行证加盐,因为这是离线应用程序。IE。没有合理的地方存放盐。我可以对通行证进行加盐并将未加密的加盐与加密文件一起存储。如果说数据库遭到破坏,盐几乎本质上是公开/可见的。盐的目的是防止彩虹表攻击。感谢尼莫,下面。

0 投票
1 回答
3288 浏览

c# - 迭代 SHA512 使其更安全?

我目前使用带有每个用户随机盐的 SHA512 来散列用户密码并将它们存储在数据库中。我认为这是非常安全的,直到我阅读了这篇关于使用廉价 GPU 暴力破解密码的文章。

作为切换到 bcrypt 的替代方案,简单地多次使用 SHA512 会提高安全性吗?在自己的输出上运行它说 100 或 1000 次以减慢过程并使其更难暴力破解?还是 SHA512 的迭代实际上没有产生安全优势?

0 投票
2 回答
1774 浏览

ruby-on-rails-3 - 对如何使用 bcrypt-ruby 感到困惑

我正在实施一个验证方案,并且正在使用 bcrypt-ruby gem。

现在在控制台中我创建了一个新用户

如果我检查密码是否有效,我会执行以下操作:

但如果我从数据库中获取用户,它会失败:

为什么会发生这种情况,我该如何实施 bcrypt 来完成这项工作?

先感谢您。

0 投票
1 回答
1678 浏览

security - 如何迁移密码哈希?

如果我将密码存储为加盐 MD5 哈希,但想将它们移动以使用bcrypt,那么执行该转换的最佳方法是什么?(鉴于我无法取回密码)

我应该加密 md5 哈希吗?这样做有我不想要的加密含义吗?

0 投票
2 回答
2447 浏览

c# - BCrypt 在给定相同的盐、字符串和因子的情况下生成不同的哈希

使用 BCrypt 的 C# 实现之一对密码进行哈希处理并将其存储到 SQL 数据库中。但是,当我返回验证哈希字符串时,BCrypt 生成的哈希值与数据库中要比较的哈希值不同。盐和因素明显相同。

这是我所知道的

$2a$12$vF/1s3MqIzHwnDshyzH/rOYUelofrj4UWv./vzWqk4o2K0uwhix7W 实际上是“Qwerty123”,它存储在一个初始化为 [nvarchar] (200) 的列中。

当我根据实现使用 BCrypt.Verify() 或 BCrypt.CheckPassword() 时,我会跟踪它直到它进行比较之前,它要与前面提到的比较的哈希是 $2a$12$vF /1s3MqIzHwnDshyzH/rOKVRePZSXFXaIpDv6.IPkbPEoOxZgSEe

如果您仔细观察,您会发现盐和因子部分是相同的。知道是什么原因造成的吗?

我正在使用的显式实现可以在这里找到http://bcrypt.codeplex.com/

我的问题可能与ASP.NET MVC 3 应用程序 BCrypt.CheckPassword 失败有关

0 投票
2 回答
159 浏览

ruby-on-rails - RoR - RubyGems 没有安装?

尝试安装 bcrypt-ruby-2.1.4。我必须使用 rvm 删除 ruby​​ 1.9.2,然后重新安装/编译,然后我可以安装 bcrypt gem,但是 gem 仅在那个终端会话中处于活动状态。如果我在终端中打开另一个选项卡,我会收到以下错误“在任何来源中都找不到 bcrypt-ruby-2.1.4”

如果我关闭终端,除非我再次删除并重新编译 ruby​​,否则我将不再能够使用 bcrypt gem(或 json 或 cucumber)?

不知道如何甚至谷歌寻求帮助?任何想法或帮助将不胜感激。

Bobby 运行 osx 10.6.8 ruby​​ 1.9.2-p180

0 投票
2 回答
791 浏览

encryption - 如何批量加密 MySQL 数据库中的现有密码?

我正在为一个客户更新一个网络系统,他的“帐户”表有超过 20,000 个用户,每个用户都有一个纯文本的密码字段,这意味着没有一个密码是加密的。(我知道,吓人!)无论如何,我需要知道如何获取所有这些密码并轻松加密它们,最好是批量加密,然后将它们导入数据库。我在搜索中找不到太多。我确实看到了 B-Crypt,但它看起来主要用于文件。我对此很陌生,所以任何建议都将不胜感激!谢谢。:)