Php 使用BCrypt,并生成盐

Php 使用BCrypt,并生成盐,php,salt,encryption,bcrypt,Php,Salt,Encryption,Bcrypt,所以 我想将BCrypt用于我的用户身份验证表单。 我可以使用该代码注册用户 <?php $salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$'; crypt("secretpassword", $salt); ?> 我可以获得用户输入,但我如何知道已经使用的盐? 我对此不清楚 代码已从phpmaster.com中复制,并且(根据在SO上提出的问题,我无法再次找到该问题) 这纯粹是用于教育目的 盐存储在BCrypt生成的散列中。因此,只要这样做就行了: $

所以

我想将BCrypt用于我的用户身份验证表单。 我可以使用该代码注册用户

<?php
$salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$';
crypt("secretpassword", $salt);
?>
我可以获得用户输入,但我如何知道已经使用的盐? 我对此不清楚

代码已从phpmaster.com中复制,并且(根据在SO上提出的问题,我无法再次找到该问题)
这纯粹是用于教育目的

盐存储在BCrypt生成的散列中。因此,只要这样做就行了:

$passwordIsOk = crypt($password, $hash) === $hash;

嗯,我没听懂,请容忍我。我应该把散列存储在数据库中吗?idk,这是个好主意吗?什么说:)谢谢,所以你的意思是当用户登录时验证密码时,我不需要使用盐?我可以简单地使用if(crypt($userpass,$hash)==$hash;?$hash中存储的数据是什么?对,您不需要存储salt,因为它将由BCrypt嵌入哈希中。$hash存储什么?@SworoopMahapatra
$hash
crypt()的先前输出
命令。它是一个格式化字符串,包括所使用的算法、salt和散列。
crypt()
命令接受它作为参数,并从中提取salt并将其作为salt应用于第一个参数。salt旨在防止黑客利用预先计算的哈希数据库轻松破解密码,同时确保所有存储的密码都具有唯一的哈希(因为有些用户将使用相同的密码,没有salt意味着他们将使用相同的散列)。谢谢Kitsune。谢谢Laurent。:)全部清除
crypt("secretpassword", $salt);
$passwordIsOk = crypt($password, $hash) === $hash;