Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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_Mysql_Hash_Passwords_Salt - Fatal编程技术网

Php 存储散列函数作为散列密码的一部分是一种不好的做法吗?

Php 存储散列函数作为散列密码的一部分是一种不好的做法吗?,php,mysql,hash,passwords,salt,Php,Mysql,Hash,Passwords,Salt,在crackstation.net上使用for hashing+salting,返回的哈希包括使用的哈希算法。我将create_hash函数返回的散列存储在数据库中。存储这些信息是一种不好的做法吗?这会给黑客带来优势吗?我认为这是一个很好的做法。这意味着,如果你升级你的散列函数(到更安全的地方),新用户将立即使用新的散列函数 现在,您不能立即在旧的散列函数上重新散列用户,因为您需要他们的密码,并且您无法从散列状态检索它。相反,当这样的用户登录时,您可以使用他们的密码存储新的哈希列,并针对他们的用

在crackstation.net上使用for hashing+salting,返回的哈希包括使用的哈希算法。我将create_hash函数返回的散列存储在数据库中。存储这些信息是一种不好的做法吗?这会给黑客带来优势吗?

我认为这是一个很好的做法。这意味着,如果你升级你的散列函数(到更安全的地方),新用户将立即使用新的散列函数

现在,您不能立即在旧的散列函数上重新散列用户,因为您需要他们的密码,并且您无法从散列状态检索它。相反,当这样的用户登录时,您可以使用他们的密码存储新的哈希列,并针对他们的用户帐户重置哈希函数


因此,有了这样的配置,用户在登录时会慢慢进入更安全的系统。

我不会说这是一种不好的做法。散列函数通常可以根据输出散列的性质(例如字符串长度等)来识别,因此您可能不会告诉攻击者任何他们无法从散列中找出的信息。

鉴于php散列函数支持多个散列,必须包含用于稍后再次验证哈希值的哈希。哈希类型通常很容易通过其字符串长度来识别(例如md5是32个字符,sha1是40,等等)。如果您使用的是好的哈希,则不应该。(假设存在单向函数。)单向函数的定义包括这样一个语句:给定原始函数和输出,很难检索输入。但是要确保你使用的是一个没有被破坏的散列!Marc B提出了一个很好的观点——你无论如何都需要知道。有些人会争辩说,使用哈希的全部意义在于可以不加区别地共享算法。