如何在PHP中生成(有点)安全密码?

时间:2009-11-17 19:15:19

标签: php

我正在尝试提供一个可以生成随机密码的函数,该函数必须满足以下要求:

  • 8& 14个字符
  • 包含以下至少一项:小写字母,大写字母,标点符号和数字

关于此问题的最佳方法是什么,这样该函数可以生成满足上述要求的每个可能的密码?

4 个答案:

答案 0 :(得分:6)

  1. 生成小写字母,大写字母,标点符号和数字,因此您现在有4个字符。
  2. 从上面的整套中生成4-10个随机字符。
  3. 随机播放生成的字符串。在PHP中,您可以使用str_shuffle
  4. 但是,应该注意的是,如果你生成随机字符,强制每个密码至少有一个数字/标点符号等实际上不是更安全。事实上,你可以说它不太安全,因为它实际上限制了你的密码选择。

答案 1 :(得分:1)

Google上有很多"PHP Password Generator"的例子(包括来源)。其中一些人能够从你提到的角色类中指定最低要求。

其中大多数都依赖于rand()功能。这有一些安全风险,但您可以接受这些风险。您也可以使用mt_rand()函数替换它,以获得更好的随机性。

如果你真的需要一个好的随机源,你需要依靠操作系统(即linux中的/dev/random或Windows中的Utilities对象。)

答案 2 :(得分:0)

有点懒惰的方法:

生成8到14之间的随机数 生成一个完全随机的字符串,长的字符 根据定义小写/大写/ etc要求的正则表达式进行检查 如果失败,请再试一次。

答案 3 :(得分:0)

sha1应该很简单。像这样的东西,只需将其切成正确的长度,随机挑选大写,插入随机标点:

sha1(microtime() . rand(0,100))

我应该指出,我在某个地方看到了一种非常聪明的密码生成方法,可能比这更好,但不记得它在哪里。