0

我在谷歌上学习/寻找太久了,虽然我找到了很多一般的教程,但我想知道 PHP 中 (crypt) 函数中的“可选 SALT”参数。我打开了太多标签,无处可去,所以,在这一点上,我想我只是寻求帮助。

至于盐,我在某处读到,如果您不添加它,它将为您添加,但这不是一个好习惯。我似乎找不到“为什么”它好/不好。这应该如何处理?

我在这里和那里读过一些关于随机化盐的东西,但其他人说这没关系......再次令人困惑。

此外,我在检查存储的数据时也遇到了问题。显然,如果我做类似的事情

crypt("pass string here",salt here);

我会得到一个随机字符串作为通行证......所以在用户登录时,然后是

$_POST['the entered name/pass etc '];

并检查用户通过的 db 值将始终等于 false。那么我认为 id 必须重新哈希 /salt 用户输入时给出的通行证,然后测试数据库上的内容?

另外,我在整个网络上都读过(但此时我很困惑)盐以某种方式存储在数据库中?它不必隐藏?

我可以继续说下去,只是老实说迷路了,我想我读得太多了,不知道如何继续。在这一点上,如果有人拥有这些资源,我真正喜欢的是与教程的良好链接。

4

2 回答 2

0

您需要在用户注册时生成一个安全的随机盐值,并将该盐存储在数据库中。

当用户登录时,从数据库中获取 salt 和 hash,计算他们使用原始 salt 键入的密码的 hash,并确保 hash 匹配。

另外,不要使用通用哈希算法(例如 MD5 或 SHA*);相反,请使用专用的慢速密码散列算法,例如 bcrypt 或 scrypt 或 PBKDFv2。

于 2012-10-24T20:41:47.183 回答
0

为了最大限度地提高安全性,您永远不会在数据库中拥有明文密码,并将其开放给任何拥有/可以访问该数据库的人。因此,您要做的是选择一个预定义的盐,获取用户所需的密码并使用盐和哈希对其进行加密。

盐是您添加的一些额外随机字符,以使散列密码更加安全。您应该跟踪这一点。

然后哈希获取盐+密码并基于它生成一个随机字符串,这样如果你给它相同的盐+密码,你总是会得到那个唯一的哈希。

这似乎是对加盐/散列的相当有用的介绍:

http://crackstation.net/hashing-security.htm

于 2012-10-24T20:47:04.407 回答