问题标签 [salt]

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 投票
6 回答
281 浏览

cryptography - 使用帐户名作为盐

所以我正在制作一个游戏网站。没有什么会流行的:P

现在我正在考虑密码安全性,我将使用加盐,但我没有在帐户表中添加一个新列,而是考虑使用帐户名称作为盐,因为它不能更改,并且是“唯一的”。我的意思是 2 个用户不能有相同的帐户名。

但我在想,如果让我们说某人的账户名香蕉是多么安全。我的意思是这个词在黑客使用的这些词表中必须很流行。

假设帐户名是香蕉,密码是 hello(用 sha1 散列),这很容易反转,对吗?

0 投票
5 回答
353 浏览

hash - 使用数据哈希作为盐

我想知道 - 将某物的哈希用作其自身的盐有什么缺点吗?

例如 hashAlgorithm(data + hashAlgorithm(data))

这可以防止使用查找表,并且不需要在数据库中存储盐。如果攻击者无法访问源代码,他将无法获得算法,这将使暴力破解变得更加困难。

想法?(我有一种直觉,这很糟糕——但我想检查它是否真的如此,如果是,为什么。)

0 投票
3 回答
349 浏览

php - 我应该如何在我的密码哈希中加入盐?

会强多少

可以比作:

$salt是长度为 12 的每个用户字符串,由强随机 ASCII 组成。

0 投票
1 回答
3293 浏览

passwords - 用于哈希密码的双盐?

我正在考虑使用两个不同的盐字符串对用户密码进行哈希处理,一个存储在对所有用户都相同的代码中,另一个存储在数据库中,每个用户都有自己的唯一值。

这会比简单地将值存储在数据库中更有效吗?

任何建议,意见appreiated。

谢谢

0 投票
1 回答
260 浏览

grails - 如何使用 grails 在 Acegi 上指定自定义盐?

在使用 grails 的 acegi 0.5.2 插件对密码进行编码时,我需要指定自定义盐。

我找到了一个教程,该教程展示了如何使用用户参数(可能是用户名)来使用 ReflectionSaltSource。但是,我无法让它发挥作用,我实际上需要能够控制盐分,而不仅仅是选择要使用用户的哪个属性。

具体来说,我需要盐来匹配格式<hard coded string>_<some user specific property>_<the password>,然后对该字符串进行编码。这是与旧系统兼容所必需的。

acegi 和 grails 可以做到这一点吗?如果是这样,怎么做?

0 投票
15 回答
260127 浏览

c# - C# 中的哈希和盐密码

我刚刚浏览了 DavidHayden 的一篇关于Hashing User Passwords的文章。

真的,我无法得到他想要达到的目标。

这是他的代码:

是否有任何其他 C# 方法用于散列密码并添加盐?

0 投票
5 回答
5169 浏览

hash - 我误解了什么是哈希盐吗?

我正在努力将哈希摘要生成功能添加到我们的代码库中。我想使用字符串作为哈希盐,以便可以将预先知道的密钥/密码短语添加到需要哈希的任何内容之前。我误解了这个概念吗?

0 投票
8 回答
13037 浏览

security - 如何在我的密码登录中实施盐?

我想在我的登录系统中实现一个盐,但对它应该如何工作有点困惑。我无法理解其背后的逻辑。我了解 md5 是一种单向算法,我遇到的所有函数似乎都将所有内容散列在一起。如果是这种情况,如何取回密码进行比较?我最大的问题是,加盐用户密码比散列密码更安全吗?如果数据库曾经被破坏,散列和盐就在数据库中。这不正是黑客所需要的吗?

我还在 SO 上找到了另一个帖子,其中另一个开发人员说:

“确保你的盐和算法与数据库分开存储”

我想将盐存储在数据库中。如果我这样做真的有问题吗?

我正在寻求一些帮助以了解其工作原理以及最佳实践可能是什么。任何帮助是极大的赞赏。


编辑:我要感谢大家的回应和想法。尽管我现在可能更加困惑,但这对我来说无疑是一次学习经历。再次感谢各位。

0 投票
2 回答
5422 浏览

php - PHP crypt 和 salt - 请进一步说明

我昨天在这里,得到了一些非常好的答案。我把我得到的东西放在一起,我认为这是一个相当安全的算法。我在使用带有生成盐的 for 循环的河豚时遇到问题。

我正在使用 base64 字符和 for 循环来获取随机字符串。我想把这个生成的字符串作为盐插入到 crypt 函数中。

因为关于河豚的文档非常稀少,而且 PHP 文档甚至没有真正提到它,所以我在这里有点摸不着头脑。

真正奇怪的是,如果你以现在的方式运行这段代码,它不会失败。从 for 循环上方或crypt 函数中删除“$2a$07$”,它将间歇性地返回一个加密字符串。我对河豚的理解是加密的字符串必须以 '$2a$07$' 开头并以 "$' 结尾,因此 crypt 函数中的连接。我真的不需要 for 循环上方的开始字符串,只是想得到摆脱它。

我还想澄清存储随机盐的最佳实践,无论是在数据库中还是通过将 crypt 函数的输出存储在数据库中?

昨天,没有真正的代码被抛出,只是讨论。今天我想把一些代码放在一起,并有一些相当安全的东西。如果有人能提出更好的算法,我总是很开放。

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) 的两倍?

更新

这是修复: