为php登录系统扩展和使用salt生成代码

时间:2012-03-15 09:37:20

标签: php encryption salt salt-creation

我正在为webproject开发php / mysql登录系统。通过浏览SO和网上很多文章后,我想出了一个基本框架并开始为它编写一些代码。但是我在密码加密方面遇到了一些僵局。

经过一夜的阅读后,我发现了:

  • 我的用户密码至少应为sha1或sha2
  • 我还应该使用随机生成的盐(这是我需要帮助的)并在加密之前将其附加到密码
  • 散列密码和随机生成的盐应存储在数据库中,然后查询并组合/加密,然后根据用户哈希密码进行检查。

我的问题是随机生成盐,

2 个答案:

答案 0 :(得分:0)

uniqid()?

http://sg2.php.net/uniqid

答案 1 :(得分:0)

我能想到的可能性:

  • 在循环中使用mt_rand()选择ASCII代码,将chr()concatenate对应的字符设为salt。

    这允许创建任何长度的盐。

  • 定义一个包含可用字符的字符串,在循环中使用mt_rand()从中选择随机位置,使用substr()mb_substr()和{提取所选位置的字符{3}}盐。

    这允许创建具有所选字符集和长度的盐。

  • 使用内置函数生成随机字符串(例如concatenate)并可选择哈希。

    这很简单。

我通常使用第二种选择。