较短版本的UUID4

时间:2019-03-18 19:44:04

标签: 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编码黑客,但我能做的最短时间是22年。理想情况下,由于冲突的风险是有限的,所以我会有类似git commit hash的东西。

2 个答案:

答案 0 :(得分:3)

  

我如何拥有受限制冲突风险的UUID较短版本?

将字符拖放到索引12处,因为它始终是4-not very random

由于该字符始终位于8 9 a b中,因此将其放在索引16处。

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

答案 1 :(得分:0)

使用UUID的前15个字符和后15个字符。省略两者之间的所有内容。

import uuid

uuid_str = str(uuid.uuid4()).replace("-","")
uuid_str = uuid_str[:15]+uuid_str[-15:]