我正在生成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的东西。
答案 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:]