2012-06-08 33 views
0

我正在阅读不同的技术来保护密码。我知道,无论您采取什么预防措施,长期来说,只会放慢确定的黑客的速度。我已经研究过在PHP和PBKDF2中使用bcrypt。使用散列保护密码

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

我明白,这只会减慢有人知道你是这样做,他们获得你正在使用的位置随机字符?

+2

只是一个提示;你有没有尝试寻找[盐](http://en.wikipedia.org/wiki/Salt_%28cryptography%29) – Bono

+0

是的,我已经研究过盐。我也打算提及他们,但正如我所说忽略如何创建哈希我忘了提及他们 – Somk

+0

我很惊讶,这还没有关闭。 SO上已经有几个类似的主题。 – Josh

回答

2

在散列中放置随机字符以确保安全没有意义。因为最终你必须找到实际的散列并与从用户输入中计算出来的散列进行比较。

更好的是,为散列使用种子。假设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); 

这里确保这用户凭据是为每个用户不变。它可以是用户生日,血型。