PHP:password_hash()是否检查生成的哈希是否唯一?(理解!)

PHP:password_hash()是否检查生成的哈希是否唯一?(理解!),php,password-hash,Php,Password Hash,这是一个简单的问题,因为我在google上没有找到真正有帮助的答案:password_hash()函数是否也会检查例如userdata文件中是否已经生成了这样的哈希? 我基本上了解了该函数的功能,但我对php还比较陌生,因此我无法真正了解密码是否经过唯一性检查 请在这个问题上保持温和。我只是想了解我现在使用的是什么,而不仅仅是因为我在大学的练习表告诉我这样做。不,它不检查唯一性。不 原因有二: 函数将不知道任何有关“其他”密码的信息 你不会想要这个的。如果你碰到一个复制品,你会怎么做?告诉用户

这是一个简单的问题,因为我在google上没有找到真正有帮助的答案:password_hash()函数是否也会检查例如userdata文件中是否已经生成了这样的哈希? 我基本上了解了该函数的功能,但我对php还比较陌生,因此我无法真正了解密码是否经过唯一性检查


请在这个问题上保持温和。我只是想了解我现在使用的是什么,而不仅仅是因为我在大学的练习表告诉我这样做。

不,它不检查唯一性。

原因有二:

  • 函数将不知道任何有关“其他”密码的信息
  • 你不会想要这个的。如果你碰到一个复制品,你会怎么做?告诉用户?然后他就会知道某人的密码
password\u hash()函数的设计方式不太可能重复,因此从开发人员的角度来看,两个hash在理论上可能是相同的并不重要

由于password_hash()函数的属性以及它为每个密码生成一个随机salt

  • 函数生成副本的可能性非常小,即使两个用户使用相同的密码,函数也会生成不同的哈希值
  • 无论如何都不能搜索散列,您需要另一个像用户名这样的搜索键,所以复制也不是问题

  • 它只是对给定的密码进行哈希运算。不多不少。不确定你需要一个唯一的密码做什么-根据惯例,用户名或相应的ID应该是唯一的。函数如何知道“在哪里查找”?无论如何,发生冲突的可能性非常低。什么是用户数据文件?PHP函数(大部分)是无状态的。我们现在有一个注册表表单,带有一个连接的userdata.json文件。我只是想知道函数是否检查它。但是很好。要求理论知识是不好的,因为它看起来从下行票。我一直认为更好的办法是理解内容,而不仅仅是使用它。为什么散列必须是唯一的?嗯,散列必须是唯一的,否则会发生散列冲突,这意味着您可以使用一个实际上不是原始密码的密码登录。如果您可以在两个哈希之间共享工作,则还可以减少强制执行哈希集合所需的工作真正的答案是,该算法的设计使得发生冲突的可能性非常小,这就是为什么在实践中您不需要担心它的原因。@deceze-是的,我的意思是难以置信的小,因为答案与
    password\u hash()
    函数有关,所以开发人员不必担心。但你是对的,这是不幸的,应该编辑,谢谢。