我生成的是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的东西,因为冲突的风险是有限的。
发布于 2019-03-19 03:53:50
如何才能在冲突风险有限的情况下获得较短版本的UUID?
删除索引12处的字符,因为它始终是4- not very random。
同样,删除索引16处的字符,因为它总是在8 9 a b中。
您将在0-9a-f中留下30个相当随机的字符。碰撞仍然足够小,可以忽略。请注意,uuid4s可能以数字开头,因此您可能需要在生成器中使用拒绝采样(或者直接跳过中间人,直接使用random生成您的is,实际上在这里使用uuid4没有太多意义)。
发布于 2019-03-19 03:45:52
使用UUID的前15个字符和后15个字符。省略中间的所有内容。
import uuid
uuid_str = str(uuid.uuid4()).replace("-","")
uuid_str = uuid_str[:15]+uuid_str[-15:]https://stackoverflow.com/questions/55228975
复制相似问题