随机数和时间戳作为用户名的碰撞概率



说我需要为用户生成一个随机用户名。因此,我首先将其设置为使用函数生成的随机数。在下一个情况下,我将用户名设置为随机数 时间戳。哪种情况有更多碰撞的可能性?它甚至可以决定吗?

编辑请注意,我不会生成人们使用的用户名。它只是一个占位符。

最重要的是,我没有附加时间戳。我宁愿表演。

要进一步详细说明,以随机数为105,时间戳为106。因此用户名将为211。以后的时间戳将是更大的数字数字可能是10,再次使其成为211。

显然,您的字符越多,碰撞的可能性就越小。碰撞的机会将为1/(#ofcharsinusername ^ #ofpossiblecharacters支持)。例如,仅使用小写字母的5个字符密码将有1/(5^26)碰撞的机会。由于您正在将时间戳附加到用户名上,因此很难发生碰撞。但是,我看到了3个潜在问题。首先是您需要确保使用时间随机函数,否则将多次具有相同的用户名。第二个是,如果您使用馈送随机数生成器的时间,那么与同时生成两个用户名相比,它们将完全相同(即使您将时间添加到末尾)。最后一个是,如果您将时间戳附加到用户名的末端,那么对于进入用户名的人们来说,它将非常烦人,因为时间戳有一堆与它们相关的结肠和其他垃圾。我会提示您寻找其他解决方案,并产生字母和数字的混合。一个不同的解决方案可能是获取一定数量的随机数,并使用其ASCII值来连接用户名。从21到126,将为您提供所有下部和上层案例字母,以及数字和一些符号。此外,这将使碰撞变得非常困难,因为它不会与另一个密码完美地执行。碰撞可能是1/(n^105),其中n是字符的数量。

最新更新