2011-09-22 45 views
1

我正在开发一个应用程序,使现有用户可以通过电子邮件邀请他们的朋友。在邀请过程中,我生成一个代码,用于被邀请人点击注册的链接。从用户电子邮件生成代码以生成链接,然后发送

目前我使用从他们的电子邮件字符串生成的默认哈希码,但是这可能是非常明显和不安全的。

我使用考虑这个:

Random random = new Random(); 
Integer code = random.nextInt() 

但我的Random实例将需要在我的整个应用程序单身?每次应用程序/ jvm重新启动时,它都会“重置”,从而在两次产生相同数字的情况下产生可能的碰撞?

编辑其实默认的哈希码并不坏,攻击者需要知道有人已经被邀请,以及他们的电子邮件是,并尝试生成正确的时间框架连杆(其中邀请活跃)。

回答

3

您可以将(当前)日期/时间字符串附加到电子邮件地址以使其唯一。

1

散列算法不能保证唯一的散列,但你可以做的是给出一个唯一的输入。尝试结合电子邮件与盐值或类似的东西。这样你保证散列是唯一的。