如何创建安全的盐?

时间:2014-01-20 19:22:20

标签: php security salt password-hash

我在这里有一个小问题,因为我正在创建一个登录和注册系统。我学校的开发人员告诉我加密安全密码。我同意这一点,但他说我需要从时间戳创建盐但是怎么做?目前我在做什么?这样:

$password = hash('sha512', $password . $salt);

和盐就像:

$salt = "xHkosbGhsfT77239GhsvH";

这在我的配置中很明显,所以它不好......

有没有人有一些提示?知道怎么做,所以如果你们中的任何一个与我分享!

感谢。

2 个答案:

答案 0 :(得分:0)

最好为每个用户生成一个唯一的salt,并将它们保存在用户表中。因此,对于密码检查,只需从数据库中获取用户salt并使用它。它比使用单一盐用于洞数据库更安全。

答案 1 :(得分:0)

您可以使用需要三个参数的hash_hmac()函数(See documentation)。我这样用它:

hash_hmac('sha512', $password . $salt, SITEKEY);

sha512 是我首选的哈希函数,可生成128B长字符串

$ password 是用户密码

$ salt 是为每个用户生成的唯一字符串,并存储在用户的同一行的数据库中

生成盐:bin2hex(openssl_random_pseudo_bytes($bits))See documentation

SITEKEY 是我制作的每个网站的唯一字符串