Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中添加密码_Php_Security_Hash - Fatal编程技术网

在PHP中添加密码

在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(

有人能帮我吗。我一直在读有关添加密码以使我的密码更安全的文章。我使用的格式是salt:password\u hash,因此我的代码是
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
)用于密码哈希,这些算法不再适用。的可能副本也可能为: