我的情况是这样,我需要为人们提供一个他们可以用来登录的一次性代码。这些人不懂技术。他们需要提供人类可读的代码。
格式与此类似;
ACBE-adK3-SdLK-K23J
一组 4 乘 4 人类可读的字符。对于总共 16 个字符,这作为 UUID 似乎是相当安全的。但是如果需要可以很容易地扩展。
现在,是否使用说 NanoID 4 次来生成一个 4 个字符的长字符串,相当于使用它一次来生成一个 16 个字符的字符串,然后将其切碎?我觉得是这样的。以编程方式实现任何一个都很简单。但是,我真的很想知道实际的事实答案。如果某个数学专家会放纵我?
编辑:回答问题;
- 这是为了让人们可以访问只有他们应该可以访问的照片,例如护照照片、学校照片等。人们使用代码一次将照片链接到他们的电子邮件,并从他们使用电子邮件/密码组合登录时开始。在这种情况下,让人们事先使用电子邮件注册不是一种选择。
- 我知道使用十六进制数字是常见的情况。我需要易于人类阅读。因此,将 16 位十六进制块切割成 4 个不同的部分似乎是合乎逻辑的步骤。
- 选择的字母将是 az AZ 0-9 并排除一些符号,例如 0/o/O 和 I/1/l 以限制错误。这将允许用更少的字符表示相同的 ID。
- 我现在知道,NanoID 不是 UUID 实现。比。但对于我的目标,我认为这已经足够了。如果没有,我也想知道。
- 我正在使用 Python 3