python - UUID4 的较短版本

标签 python uuid

我正在 python uuid4 字符串中生成。

我用它来识别我的服务帐户,但我的一个系统(GCP 服务帐户)有 30 个字符的限制,现在使用其他帐户为时已晚:

Service account ID must be between 6 and 30 characters.
Service account ID must start with a lower case letter, followed by one or more lower case alphanumerical characters that can be separated by hyphens.

如何获得具有有限冲突风险的较短版本的 UUID?

我见过一些 base64 编码 hack,但我能做的最短是 22。理想情况下,我会拥有类似 git commit hash 的东西,因为冲突的风险是有限的。

最佳答案

How can I have a shorter version of the UUID with a limited conflict risk?

删除索引 12 处的字符,因为它始终是 4 - not very random .

同样删除索引 16 处的字符,因为它始终位于 8 9 a b 中。

您将在 [0-9a-f] 中留下 30 个相当随机的字符。碰撞仍然小到可以忽略。请注意,uuid4s 可能以数字开头,因此您可能需要在生成器中使用拒绝采样(或者直接删除中间人并直接使用 random 生成您的 id,实际上使用 uuid4 没有多大意义都在这里)。

关于python - UUID4 的较短版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228975/

相关文章:

python - Django 中的动态表单要求

ios - 如何使用 iOS 创建 GUID/UUID

algorithm - 如何增加/减少随机(类型 4)UUID?

Python 字符串和整数

java - 忘记密码请求 (Java)

MySQL:使用 UUID(字节串)作为主键的查询不起作用

ruby-on-rails - 多态关联 Rails : Different primary_keys types (id & uuid)

python - Scrapy 蜘蛛没有抓取正确的 div

python - 将孔号转换为 96 孔板上的标识符

python - Django 计数器循环到索引列表