首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在生成注册激活密钥时避免冲突?

如何在生成注册激活密钥时避免冲突?
EN

Stack Overflow用户
提问于 2011-11-12 06:16:28
回答 5查看 951关注 0票数 3

我正在做一个大项目的注册系统。

成功注册后,服务器生成一些激活密钥,将其添加到用户的行中,并通过电子邮件发送给用户。使用一些密码生成器类来实现此目的。

问题是(我知道这听起来很抽象,但我只是想知道),如何避免重复生成pass?我的意思是,将来生成器有没有可能创建已经存在于数据库表中的激活密钥?密钥生成后需要检查重复吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-12 06:18:22

试试uniqid()吧。

票数 2
EN

Stack Overflow用户

发布于 2011-11-12 06:21:14

我推荐使用PEAR的Text_Password package。不要试图重新发明这个轮子。

不要强制密码必须是唯一的。强制密码实际上是不太安全的。考虑一下,如果我尝试将密码设置为xyzzy,但站点告诉我不能,这意味着现在我知道一些帐户正在使用xyzzy作为密码。我只需要在所有账户上尝试这个密码,直到我找到哪一个。

不要使用哈希摘要作为生成的密码。您的用户不想键入32个字符(或更长)的十六进制字符串。我有过在2001年使用PKI和MD5散列编写安全软件激活密钥包的经验。但是没有人会用它,因为钥匙太长了。

确实使用散列摘要和盐来存储密码。阅读了这篇由我们无畏的领导者:You're Probably Storing Passwords Incorrectly撰写的文章。

另请参阅我对其他几个与密码相关的问题的回答:

票数 3
EN

Stack Overflow用户

发布于 2011-11-12 06:21:43

使用具有唯一输入(例如用户的唯一用户名)的散列算法将导致预期冲突率为0的散列。

我不会使用我自己的算法来解决这个问题。如前所述,uniqid()md5()是有保证的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8100636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档