gpt4 book ai didi

encoding - 如何生成唯一的、小的、随机的和用户友好的 key ?

转载 作者:行者123 更新时间:2023-12-03 23:47:11 24 4
gpt4 key购买 nike

几个月前,我的任务是为我们的 Web 应用程序实现一个独特的随机代码。代码必须对用户友好且尽可能小,但本质上仍然是随机的(因此用户无法轻松预测序列中的下一个代码)。

它最终生成了如下所示的值:

Af3nT5Xf2

不幸的是,我从未对实现感到满意。 Guid 是不可能的,它们太大了,用户很难输入。我希望能有更多类似 4 或 5 个字符/数字的内容,但如果我们编码为,我们的特定实现会生成明显的模式序列少于 9 个字符。

这是我们最终做的:

我们从数据库中提取了一个唯一的连续 32 位 ID。然后我们将它插入到 64 位 RANDOM 整数的中心位中。我们创建了一个易于输入和识别的字符查找表(A-Z、a-z、2-9 跳过了 L、l、1、O、0 等容易混淆的字符)。最后,我们使用该查找表对 64 位整数进行 base-54 编码。高位是随机的,低位是随机的,但中心位是连续的。

最终的结果是一个比 guid 小得多的代码并且看起来是随机的,即使它绝对不是。

我从未对这个特定的实现感到满意。你们会怎么做?

最佳答案

这是我将如何做到的。

我会得到一个常用英语单词的列表以及使用频率和一些语法信息(比如它是名词还是动词?)。我想你可以在 intertubes 周围寻找一些副本。 Firefox 是开源的,它有一个拼写检查器......所以它必须以某种方式获得。

然后我会对其运行过滤器,以便删除晦涩的单词并排除太长的单词。

然后我的生成算法会从列表中选择 2 个单词并将它们连接起来并添加一个随机的 3 位数字。

我还可以在动词/名词之间随机化单词选择模式,例如

eatCake778
pickBasket524
rideFlyer113 etc..



shell 不必是驼色 shell ,您也可以将其随机化。您还可以随机化数字和动词/名词的位置。

由于这是大量随机化,Jeff 的 The Danger of Naïveté是必读的。还要确保提前研究字典攻击。

在我实现它之后,我会运行一个测试来确保我的算法永远不会发生冲突。如果碰撞率很高,那么我会使用参数(使用的名词数量、使用的动词数量、随机数的长度、单词总数、不同类型的 shell 等)

关于encoding - 如何生成唯一的、小的、随机的和用户友好的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com