我在这里有一个小问题,因为我正在创建一个登录和注册系统。我学校的开发人员告诉我加密安全密码。我同意这一点,但他说我需要从时间戳创建盐但是怎么做?目前我在做什么?这样:
$password = hash('sha512', $password . $salt);
和盐就像:
$salt = "xHkosbGhsfT77239GhsvH";
这在我的配置中很明显,所以它不好......
有没有人有一些提示?知道怎么做,所以如果你们中的任何一个与我分享!
感谢。
答案 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 是我制作的每个网站的唯一字符串