随机字符串是一个很好的验证码

时间:2010-09-09 03:31:01

标签: php security registration account

我正在生成用于帐户激活的验证码。你以前可能已经看过这种事了。

我的问题:如果我使用这样的复杂公式生成此代码:

md5(md5(time().'helloguys'.rand(0,9999)));

它真的比只生成一个包含32个字符的随机字符串和gj3dI3OGwo5Enf...这样的数字更好吗?

2 个答案:

答案 0 :(得分:6)

不,使用哈希并不是更好。选择32个随机字符会更安全(不太可预测)。 (数字是字符。)使用良好的(“加密”)随机数生成器,具有良好的种子(来自/ dev / random的一些字节)。不要把时间当作种子。

答案 1 :(得分:1)

同意erickson,可能会建议您使用

pwgen -1 -s
在* nix上的

命令,这将是你可能发明的任何程序的更好的工作。

如果您想以编程方式生成一些字符串,可以查看

<?php    
$better_token = md5(uniqid(rand(),1));
?>

这提供了非常好的随机性水平和碰撞之前。

如果您需要更高级别的安全性,可以考虑在http://www.random.org/

上生成随机序列