我正在生成用于帐户激活的验证码。你可能以前见过这种东西。
我的问题:如果我要使用这样的复杂公式生成此代码:
md5(md5(time().'helloguys'.rand(0,9999)));
它真的比只生成一个由 32 个字符和数字组成的随机字符串更好gj3dI3OGwo5Enf...
吗?
我正在生成用于帐户激活的验证码。你可能以前见过这种东西。
我的问题:如果我要使用这样的复杂公式生成此代码:
md5(md5(time().'helloguys'.rand(0,9999)));
它真的比只生成一个由 32 个字符和数字组成的随机字符串更好gj3dI3OGwo5Enf...
吗?
不,使用哈希并不是更好。选择 32 个随机字符会更安全(更不可预测)。(数字是字符。)使用良好的(“加密”)随机数生成器,具有良好的种子(来自 /dev/random 的一些字节)。不要把时间当作种子。
同意埃里克森,只是建议你使用
pwgen -1 -s
*nix 上的命令将比您发明的任何程序做得更好。
如果你想以编程方式生成一些字符串,你可以看看
<?php
$better_token = md5(uniqid(rand(),1));
?>
这在碰撞之前提供了非常好的随机性水平。
如果您需要更高级别的安全性,您可以考虑在http://www.random.org/上生成随机序列