8

我正在生成用于帐户激活的验证码。你可能以前见过这种东西。

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

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

它真的比只生成一个由 32 个字符和数字组成的随机字符串更好gj3dI3OGwo5Enf...吗?

4

2 回答 2

6

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

于 2010-09-09T03:34:51.650 回答
1

同意埃里克森,只是建议你使用

pwgen -1 -s

*nix 上的命令将比您发明的任何程序做得更好。

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

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

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

如果您需要更高级别的安全性,您可以考虑在http://www.random.org/上生成随机序列

于 2010-09-09T04:28:15.700 回答