问题标签 [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 投票
1 回答
114 浏览

ruby - Ruby BCrypt 返回数字

我在我的 RoR 中使用 BCrypt,我得到的是数字而不是我习惯的十六进制表示。这里是刑法。

encrypted_pa​​ssword 变量显示为 4245597694343378249 之类的数字。我使用 BCrypt for Java,我期待像 $2asfa$asdfasfsafsad 这样的数字。我想知道是否有人知道我做错了什么。

任何帮助是极大的赞赏。

0 投票
2 回答
396 浏览

cryptography - 除了使用 bcrypt 密码散列的随机项目级盐之外,使用全局密钥是否有整体优势?

我在 php 5.3+ 中使用 bcrypt 进行密码散列

我知道 bcrypt 使用随机盐,该盐内置到每个项目的结果哈希中。这使得破解每个哈希变得困难,并防止破解

我不知道是否还有充分的理由使用额外的应用程序级全局密钥。

例如,不仅仅是将密码字符串散列,例如“password1”使用内置在 bcrypt 生成系统中的随机盐,将“password1”转换为 bcrypt 散列(根据此处:https ://gist.github.com/1053158 ):$2a$08 $mjQAZ5cZi5B9u6zpUU4mGuRcvtxr1K.9ncYpxCdG.YhlD8yFG2mXK

我还可以创建一个常量,例如: "@#$%$%&BDFGG@$%BNG$Y^$%SEHYSZTHN$%" ,将该常量放入应用程序(放入应用程序源代码或应用程序的配置文件) , 并将其附加到任何要散列的字符串。因此 "password1"+"@#$%$%&BDFGG@$%BNG$Y^$%SEHYSZTHN$%" -> 将被散列到与仅 "password1" 不同的散列中。$2a$08$xFgULsrpoIYlbxp1IG3H8.kdVggyhm4aTQXrP2Ptu25nMBUjBdrrK

显然,在应用程序本身的上下文中,这并没有多大帮助。如果有人在正在运行的系统上尝试密码“password1”,他们就会成功,因为他们会自动获得全局密钥以供使用。但如果他们只有数据库或只能访问数据库,似乎全局密钥可能是一个额外的障碍?因为在不知道全局密钥的情况下,他们将不得不破解 ""password1@#$%$%&BDFGG@$%BNG$Y^$%SEHYSZTHN$%" 而不是仅仅破解 "password1"。

我可以想象可能存在一些潜在的好处:

  • 这可能真的会阻碍仅使用受损数据库来破解哈希?

以及可能存在的一些模糊的缺点:

  • 这为所有被散列的字符串引入了一个公共线程,如果散列已知,这可能会使破解散列变得更容易。
  • 它增加了数据的脆弱性。如果全局密钥丢失,例如在服务器迁移期间或其他任何情况下,数据现在就是垃圾。

所以我想弄清楚拥有一个全局密钥是否是一个好主意,或者每个项目的随机盐是否足够,以及你想要的。有谁知道使用全局密钥的任何实现,或建议使用它的研究?

0 投票
1 回答
1006 浏览

php - 我拥有的移动客户端的 OAuth 2

我有一个 LAMP-stack webapp,它公开了一个 REST API。目标是拥有 3 层 - 数据库、服务 (REST) 和多个前端客户端(网站、Android、iPhone)。目前,这些层都在同一个盒子上。网站使用 API 调用服务逻辑进行 CRUD 操作,移动客户端尚未构建。

我正在使用 PHP bcrypt 实现来存储用户凭据。这在设计上很慢/ CPU 密集型。每个 API 调用都需要一个用户名/密码对以及 API 参数。这将阻碍大规模扩展,因为每次 API 调用都会计算哈希值。

所以,我一直在寻找替代方案。OAuth 2.0 使用不昂贵的可撤销令牌,但我读过的文章似乎表明该协议的主要用例是让第三方访问我的 API。这不太适合我的模型,例如,移动客户端归我所有。

  1. OAuth 是否仅适用于第三方,或者公司通常会将其移动客户端添加为自己的 API 的 OAuth 消费者?

  2. 是否可以将共享密钥与我发布到应用市场的 Android/iPhone 应用捆绑在一起,以便它们能够立即与 API 关联?

0 投票
1 回答
526 浏览

grails - Bcrypt 密码编码器 - grails

我在这里阅读了有关密码编码器的帖子,并看到了以下语法:

我已经在我的 grails 项目中使用了它,它有 bcrypt 密码加密插件并且效果很好。我只是好奇第三个参数的值为空是什么?感谢你的分享。

0 投票
1 回答
341 浏览

php - 这段代码是使用 Bcrypt 还是纯河豚?

我正在在线学习 php 安全性(使用 php 5.4),并遇到了以下我想了解/使用的代码。以下代码是否使用 bcrypt,它是河豚的良好实现吗?如果存在问题,您能否建议修复或资源。谢谢。

这是用户注册期间的用法:

这是用户登录过程中的用法:

0 投票
2 回答
1251 浏览

php - BCRYPT 和 Random SALTS 一起在数据库中

我正在升级我的网站的安全级别。

在研究存储密码的最佳方法时,我在 PHP 5.3 中发现了 BCRYPT 选项。我已经实现了这个函数来使用静态 SALT,但是我读到每个密码都应该有不同的 SALT 或者违背了目的。

我应该将 SALT 与用户记录以纯文本形式存储在数据库中吗?这是否也违背了目的?或者我应该使用 md5 散列盐并将其存储在数据库中?

实现这个和存储 SALT 时最好的方法是什么?

0 投票
1 回答
5367 浏览

javascript - Nodejs bcrypt 库

我使用 nodejs bcrypt库来更好地保护密码。

我不确定我是否完全了解如何使用它,但到目前为止我得到了这个:

我在示例中删除了此处的所有错误处理,以便更容易阅读代码。

1.这可行,我可以登录并设置会话。但这就是它的全部吗?我错过了什么吗?

2.生成哈希时,看起来盐是在密码前添加的。我不必将盐保存在数据库中吗?

任何帮助表示赞赏

0 投票
2 回答
8640 浏览

encryption - Web 应用程序密码:bcrypt 和 SHA256(和 scrypt)

随着最近(例如LinkedIn)关于密码的所有讨论,我正在研究密码散列实现。在喝了两杯咖啡和早上阅读之后,我不再是一个密码学家了,就像我刚开始时一样。我真的不想假装我是。

具体问题

  1. 使用整数唯一用户 ID 作为有效盐会失败吗?(crypt() 只使用 16 位?)

  2. 如果我只是在哈希上一遍又一遍地运行 sha256() 直到用完一秒钟,这是否会击败蛮力攻击?

  3. 如果我必须问这些问题,我应该使用 bcrypt 吗?

讨论/解释:

目标很简单,如果我的用户的散列密码被泄露,他们:

  1. 不会“容易”破解,
  2. 破解一个密码不会暴露使用相同密码的其他用户)。

我读到的#1 是哈希计算必须很昂贵——比如说,需要一两秒来计算,并且可能需要一点或内存(以阻止硬件解密)。

bcrypt 内置了这个,如果我理解正确的话,scrypt 更具前瞻性,并且包括最低内存使用要求。

但是,通过“重新散列” sha256() 的结果多次以用完几秒钟,然后将最终循环计数与散列一起存储以供以后检查提供的密码,这是否是一种同样有效的消磨时间的方法?

对于#2,为每个密码使用唯一的盐很重要。尚不清楚盐必须有多随机(或大)。如果目标是避免使用“mypassword”作为密码的每个人都拥有相同的哈希值,那么仅仅这样做还不够吗?:

甚至这个,虽然我不确定它能给我带来什么:

除了我知道它是唯一的之外,我可以从使用用户 ID 中看到的唯一好处是避免将盐与哈希一起保存。没有太大的优势。使用用户 ID 作为盐是否存在真正的问题?它没有完成#2吗?

我假设如果有人可以窃取我用户的散列密码,那么我必须假设他们可以获得他们想要的任何东西——包括生成散列的源代码。那么,在散列之前向密码添加一个额外的随机字符串(相同的字符串)有什么好处吗?那是:

我已经看到了这个建议,但我不明白我从每个用户的盐中获得了什么。如果有人想暴力破解攻击,他们会知道“app_wide_string”并在运行字典攻击时使用它,对吧?

如上所述,是否有充分的理由使用 bcrypt 而不是我自己的滚动?也许我问这些问题的事实就足够了?

顺便说一句——我刚刚在我的笔记本电脑上计时了一个现有的散列函数,我每秒可以生成大约 7000 个散列。不完全是通常建议的一两秒。

一些相关链接:

使用 sha256 作为用户 ID 的散列和加盐

SHA512 与 Blowfish 和 Bcrypt

用户密码盐的最佳长度是多少?

0 投票
1 回答
1973 浏览

java - 如何在 Coldfusion8 中使用 javaloader 设置 java 库?

我试图让 javaLoader 在 Coldfusion8 应用程序中运行,我需要一些帮助才能让我越过终点线。

这是我到目前为止所拥有的:

内部application.cfc

这是按照此处此处的说明完成的。

在我的handler.cfc中,我试图访问 javaloader 和 BCrypt 类,如下所示:

我可以转储 cryptonite 变量,但是当我尝试创建 BCrypt 的实例时,脚本失败了。

问题
我很高兴我做到了这一点,但是我已经坐了几个小时了,不知道我做错了什么。希望有更多见识的人可以为我指明方向?

感谢帮助!

0 投票
1 回答
415 浏览

asp.net-mvc-3 - ASP.NET MVC - 将 zetetic 安全性与 NHibernate Membership Provider 集成

zetetic 有一个非常好的加密库,其中包括对 bcrypt2 的支持。看起来它应该足够简单,可以合并到 ASP.NET 成员资格提供程序中(事实上,可以在此处找到默认提供程序的说明)。我正在使用 NHibernate Membership Provider(在此处找到),它似乎在其 EncodePassword 函数中硬编码 SHA1 哈希格式。我的问题是,这应该如何适应 BCrypt2(特别是 Zetetic 的包装器)。这是我非常害怕出错的事情,我不愿意自己尝试一下,以免它应该“起作用”但有一些我没有资格发现的隐藏缺陷。