随机字符串是好的验证码吗

发布于 2024-09-18 12:05:05 字数 208 浏览 5 评论 0原文

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

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

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

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

I'm generating a verification code to be used for account activation. You've probably seen this sort of thing before.

My question: if I were to generate this code with a complex formula like this:

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

Is it really any better than generating just a random string of 32 characters and numbers like gj3dI3OGwo5Enf...?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小清晰的声音 2024-09-25 12:05:05

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

No, using the hash is not better. It would be more secure (less predictable) to pick 32 random characters. (Digits are characters.) Use a good ("cryptographic") random number generator, with a good seed (some bytes from /dev/random). Don't use time as a seed.

独孤求败 2024-09-25 12:05:05

同意埃里克森的观点,只是建议您

pwgen -1 -s

在 *nix 上使用命令,这将比您可能发明的任何程序更好地完成工作。

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

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

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

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

Agree with erickson, just may advise you to use

pwgen -1 -s

command on *nix which will the job muich better of any procedure you may invent.

If you want to generate some string programmatically you may take a look at

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

this gives very good level of randomness and prior to collisions.

If you need even higher level of security you may consider to generate random sequences on http://www.random.org/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文