为url生成看似随机的唯一数字

2024-09-30 08:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想知道youtube的网址。特别是视频idwatch?v=XZmGGAbHqa0。类似的tinyurl服务也是如此

我偶然看到汤姆的Will YouTube Ever Run Out Of Video IDs?视频,非常有趣。但是,以随机的方式生成一个看似随机的数字,检查重复项看起来相当昂贵

如果你还没看过视频,youtube会生成一个大的唯一数字,并对其进行base64编码。不确定整个过程在youtube里是否那么简单,但我正在尝试写一些类似的东西

我遇到了一个叫做Modular Multiplicative Inverse.的数学函数,使用这个函数和一点扩展的欧几里德算法将从给定的输入中生成一个唯一的数字。反转也是可能的,但是有人在不知道种子的情况下很难反转或使用暴力。所以我们可以很容易地从数据库中的后续id中获得一个大的随机数。甚至有可能

但我有困惑

正如tom在视频中提到的,跨多个服务器同步后续的id可能会导致问题和开销。但是如果我们不把它放在后面,那么找到一个唯一的id不是一个乏味而昂贵的任务吗?我们必须检查数据库中的id是否可用

我应该避免在url中混入后续id吗?或者用乘法逆来掩盖它是好的

我为什么要这么做?要节省存储空间还是要节省url空间?我仍然需要生成一些看似随机、唯一的东西,并且能够快速生成它,而不需要复制和搜索它

有没有更好的方法来达到我的目的?我查了所有类似的问题和一些博客文章。上面是this

对不起,如果我解释不清楚,我很不知道该问什么


Tags: 函数id数据库url视频youtube数字will
1条回答
网友
1楼 · 发布于 2024-09-30 08:24:22

这就是为什么您完全忽略了确保随机生成的数字的唯一性的问题,而使用伪随机置换(PRP)族来转换预协调计数器

PRP族类似于PRF族,因为它是一种密码,它接受密钥和明文并生成密文,只是它在明文和密文之间有一对一的映射

这使得我们可以使用类似Twitter雪花的设计,然后简单地将内部顺序标识符编码为非顺序外部标识符

请参见Algorithm to turn numeric IDs in to short, different alphanumeric codes以获取Python中的实现

还有

M. Luby and C. Rackoff. How to construct pseudorandom permutations from pseudorandom functions. SIAM J. Comput., 17(2):373–386, Apr. 1988.

相关问题 更多 >

    热门问题