我正在生成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这样的事情,因为冲突的风险是有限的。

最佳答案

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


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

同样,将字符放在索引16处,因为它始终位于8 9 a b中。

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

10-06 01:50