盐和哈希生成问题

时间:2010-03-03 14:07:59

标签: php security hash salt

我希望您对某些事情有所反馈。

基本上我有一个名为$ uniqueID的值,即= ID +名字的第一个字母+姓氏的第一个字母+字符串“CAN”

然后我将$ uniqueID转换为salt值,如$ salt = sha1($ uniqueID);

然后我使用md5()将用户密码转换为哈希值。

然后我使用正确的数据类型将这两个值seperatley存储在数据库中。

我只是想知道这是否是一种安全的方式来保护两种类型的用户验证?密码验证将由用户完成,$ uniqueID将通过脚本完成。

我不会提供服务来提醒您密码,您必须创建一个全新的密码。

我还为会议提出了一些安全措施。

2 个答案:

答案 0 :(得分:1)

通常,salt是一个随机值,对于它所使用的每个数据都是唯一的。这意味着每个用户都应该拥有自己的随机和唯一的盐,在散列密码时使用。并且不要使用任何用户信息来生成盐。

例如,您可以使用randuniqid为每个用户生成随机且唯一的salt:

$salt = uniqid(rand(), true);

这种盐既独特又随机。

答案 1 :(得分:0)

我建议在sha1和密码字段上使用$uniqueID

另外,请务必加密密码字段。

此外,值得注意的是,单向散列可以从不同的输入获得相同的值。正如Gumbo指出的那样,如果您计划将$uniqueID用作唯一ID,则会遇到问题。 (所以不要; - )

如果您想使用uniqueID作为会话密钥,那么您需要在使用之前至少检查冲突。请参阅Zend.SessionCodeIgniter->sessionKohona::Session

相关问题