密码盐是否需要包括数字和字母?

时间:2013-01-08 15:04:44

标签: security passwords password-protection

我正在使用加密算法对新创建的密码进行哈希处理。我使用随机数函数生成盐。

如果您的盐只包含数字(没有字母)或者这根本没有区别,您是否会损害安全性?

1 个答案:

答案 0 :(得分:1)

salt应该唯一(理想情况下,对于世界上的每个密码),不可预测。使用确定性计算机可以做的最好的事情是,获取一个随机数,并希望返回的值几乎唯一。因此,您拥有的组合越多,盐的独特性就越大。

一些哈希算法定义了接受字符的数字和字母。例如,PHP的BCrypt需要一个含有22个字符的盐:

./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

您可以使用字母表中的所有字符获得最可能的组合,而不仅仅是字符0-9。当然,带有小字母(0-9)的较长盐可以具有尽可能多的组合,如较短的盐和大字母(0-9,a-z,......)。

要缩短它,请使用所有可能的字符,以及哈希算法所需的字符数。

P.S:如果你使用像BCrypt这样的密钥派生函数(你真的应该这样做),那么你就不能将密码加密,而是必须将盐传递给哈希函数。