使用哈希保护密码


Securing Passwords with a Hash

我正在研究保护密码的不同技术。我知道,无论您采取什么预防措施,从长远来看,您只会减慢坚定的黑客速度。我已经研究了在PHP和PBKDF2中使用bcrypt。

暂时忽略您如何创建哈希。如果在预定位置输入哈希值的一组随机选择的 4 个或更多 ASCII 字符,是否有任何用处。是否有不同长度的哈希值?所以如果你只是计算字符的数量,你可以让一种类型说 md5 看起来像另一种类型吗?

我知道这只会减慢某人知道您正在这样做并且他们获得您用来放置随机字符的位置?

哈希中放置随机字符以使其安全是没有意义的。因为最终您必须找到实际的哈希值,并与从用户输入中计算的生成的哈希值进行比较。

更好的是,使用种子作为哈希。假设hash是一个泛型函数,$seed是一个种子,你可以做到这一点,

$seed = 'a_constant_value';
$seeded_hash = hash( $seed . $password );

如果不希望种子成为常量,请将用户的另一个凭据添加到哈希中。

$seed = 'a_constant_value';
$user_credential = 'any_data_of_this_user';
$seeded_hash = hash( $seed . $user_credential. $password );

在这里,请确保此用户凭据对于每个用户都是恒定的。它可以是用户的出生日期,血型。