我正在尝试提供一个可以生成随机密码的函数,该函数必须满足以下要求:
关于此问题的最佳方法是什么,这样该函数可以生成满足上述要求的每个可能的密码?
答案 0 :(得分:6)
str_shuffle
。但是,应该注意的是,如果你生成随机字符,强制每个密码至少有一个数字/标点符号等实际上不是更安全。事实上,你可以说它不太安全,因为它实际上限制了你的密码选择。
答案 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))
我应该指出,我在某个地方看到了一种非常聪明的密码生成方法,可能比这更好,但不记得它在哪里。