在PHP中添加密码
有人能帮我吗。我一直在读有关添加密码以使我的密码更安全的文章。我使用的格式是salt:password\u hash,因此我的代码是在PHP中添加密码,php,security,hash,Php,Security,Hash,有人能帮我吗。我一直在读有关添加密码以使我的密码更安全的文章。我使用的格式是salt:password\u hash,因此我的代码是md5($salt.:“$password\u hash)$password\u hash是原始密码的简单m5d字符串,哈希值取自mktime() 我不明白盐是怎么工作的,我需要把它也保存在数据库里吗?如果盐是不断变化的,这是如何工作的 如果用户使用密码“password”注册,并且他们注册的时间是1234567890(作为unix时间戳)。生成的密码应该是md5(
md5($salt.:“$password\u hash)
$password\u hash
是原始密码的简单m5d字符串,哈希值取自mktime()
我不明白盐是怎么工作的,我需要把它也保存在数据库里吗?如果盐是不断变化的,这是如何工作的
如果用户使用密码“password”注册,并且他们注册的时间是1234567890(作为unix时间戳)。生成的密码应该是
md5(mktime().“:”$\u POST['password'])
或类似的东西。但是如果用户尝试使用“密码”登录,那么新创建的salt将有所不同。您也必须存储salt,例如,您可以只存储注册日期,并将其用于salt中。salt可以抵御。salt是在保存密码时生成的,因此在创建用户时以及在更改密码时都会生成salt。您可以将salt作为单独的字段存储在数据库中,但也可以将salt与加密密码连接起来,并将两者存储在一个字段中。由于盐的长度通常是固定的,所以稍后很容易将两者分开以验证登录密码
值得注意的是,根据US-CERT,md5“被认为在加密方面已损坏,不适合进一步使用”。您应该改用sha-256。您的salt可以是用户的电子邮件或用户名 我建议采取这种办法:
hash_hmac('sha256', $password, $salt);
我一直在读有关添加密码以使我的密码更安全的文章
那完全是胡说八道。没有盐可以让你的密码更安全
我是否也需要将其保存在数据库中
对
如果盐是不断变化的,这是如何工作的
它不起作用
如果用户尝试使用“密码”登录,那么新创建的salt会有所不同吗
你觉得怎么样?您不能自己将mktime()结果与“1234567890”进行比较吗(以及结果哈希)?为了获得最大的效果,salt应该与用户无关。理想情况下,它应该是随机的。salt定义为:固定长度的随机字节集。salt必须始终与用户相关。不管是他的用户名还是数据库中同一行的不同列。理想情况下,salt应该是随机的……也就是说,至少与用户无关。实际上,在更安全的实现中,每次更改密码时都会生成一个新的salt。是的,这是一个很好的观点。更新答案以反映建议。的可能副本的可能副本请勿将
MD5
(或SHA1
)用于密码哈希,这些算法不再适用。的可能副本也可能为: