Php 使用crypt和blowfish散列密码

Php 使用crypt和blowfish散列密码,php,mysql,passwords,Php,Mysql,Passwords,我有一个注册页面,用户可以输入密码,所以我对这个密码进行散列,然后在数据库中对其进行散列 但是当我尝试登录时,告诉我密码不匹配,当我回显密码时,密码不匹配,就像我写了一把新的密码剑一样 如何解决这个问题有人能帮我吗 寄存器中的cryptpass函数 函数cryptPass($input,$rounds=9) { $salt=“”; $saltChars=array_merge(范围('A','Z')、范围('A','Z')、范围('0','9')); 对于($i=0;$i),在哈希之前添加到密码

我有一个注册页面,用户可以输入密码,所以我对这个密码进行散列,然后在数据库中对其进行散列

但是当我尝试登录时,告诉我密码不匹配,当我回显密码时,密码不匹配,就像我写了一把新的密码剑一样

如何解决这个问题有人能帮我吗

寄存器中的cryptpass函数
函数cryptPass($input,$rounds=9)
{
$salt=“”;
$saltChars=array_merge(范围('A','Z')、范围('A','Z')、范围('0','9'));

对于($i=0;$i),在哈希之前添加到密码中的盐必须是相同的 时间

我建议不要生成随机的salt,而是创建一个任意的salt 每次使用的常数

$salt = '@#$JASasdjbh&*()';

当然,在您自己的脚本中使用这些字符之前,您应该先更改这些字符。

在哈希之前添加到密码中的salt必须是相同的 时间

我建议不要生成随机的salt,而是创建一个任意的salt 每次使用的常数

$salt = '@#$JASasdjbh&*()';

当然,在您自己的脚本中使用这些字符之前,您应该先更改这些字符。

当对存储的密码进行哈希运算时,您的密码salt需要相同。通常,当用户注册/更改其密码时,您的代码会生成一个随机salt。然后,它将与哈希后的密码一起存储在数据库中您可以以某种方式识别它。然后,在验证用户输入时,您可以使用该salt对密码进行重新哈希处理。

当您的密码salt与存储的密码进行哈希处理时,您的密码salt需要相同。通常,当用户注册/更改其密码时,您的代码会生成一个随机salt。然后将其存储为在数据库中以某种您可以识别的方式对散列密码进行加密。然后在验证用户输入时使用该salt对密码进行重新散列。

这根本不是真的。应为创建的每个散列随机化salt。
为每个密码随机生成一个新的salt
确保a为每个密码生成一个新的salt,但在对要比较的值进行散列时,必须使用最初用于存储密码的salt。否则散列将不同,验证将失败。只有在使用随机散列时,密码salt才有用。使用相同的salt与使用no做相同的事情salt一点也不重要。关键是让人更难检查散列密码并找出散列算法。这里的主要安全问题不是有人可能获得存储在数据库中的散列?如果是这样,salt很可能会被破坏,也完全否定了其用途。不使用salt就像那样。salt用于使相同的密码看起来不同。如果两个用户都有密码“apple”,则使用两种方法(无salt和相同salt)将产生相同的输出。因此,您对每个密码使用一个随机salt,以便“apple”成为两个不同的输出。编辑:在我上面的第二个响应中,我的意思是说“随机salt”,而不是“随机散列”,这根本不是真的。salt应该对创建的每个散列进行随机分配。
为每个密码随机生成一个新的salt。
每个密码
确保可以为每个密码生成一个新的salt,但在对要比较的值进行哈希运算时,必须使用最初用于存储密码的salt。否则哈希将不同,验证将失败。只有在使用随机哈希时,密码加盐才有用。使用相同的salt这和不使用盐是一样的。关键是让人更难检查散列密码并找出散列算法。这里的主要安全问题不是有人可能会得到存储在数据库中的散列?如果是这样,盐很可能会被破坏,同时完全否定eir purpose.salt不是这样使用的。salt用于使相同的密码看起来不同。如果两个用户都有密码“apple”,则使用两种方法(无salt和相同salt)将产生相同的输出。因此,您对每个密码使用随机salt,以便“apple”成为两个不同的输出。编辑:在我上面的第二个响应中,我的意思是说“随机salt”,而不是“随机哈希”
$salt = '@#$JASasdjbh&*()';