我有一个生成字符串(类似于uuid)字符串的Javascript代码
这是js代码:
var t = "xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx"
, i = (new Date).getTime();
return e = t.replace(/[x]/g, function() {
var e = (i + 16 * Math.random()) % 16 | 0;
return i = Math.floor(i / 16),
e.toString(16)
})
Run Code Online (Sandbox Code Playgroud)
如何用python生成这个字符串?
使用正则表达式替换和secrets
Python 3.6 的新模块 - 这不等同于JavaScript代码,因为这个Python代码是加密安全的,并且它产生较少的冲突/可重复序列.
秘密模块用于生成适用于管理密码,账户认证,安全令牌和相关秘密等数据的加密强随机数.
特别是,应该优先使用秘密,而不是随机模块中的默认伪随机数生成器,其设计用于建模和模拟,而不是安全性或加密.
>>> import re
>>> from secrets import choice
>>> re.sub('x',
lambda m: choice('0123456789abdef'),
'xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx')
'5baf40e2-13ef-4692-8e33-507b-40fb84ff'
Run Code Online (Sandbox Code Playgroud)
你希望这个ID能够真正独一无二,而不是Mersenne Twister MT19937 - random
实际上它是为了专门产生一个可重复的数字序列而构建的.
对于Python <3.6,你可以做到
try:
from secrets import choice
except ImportError:
choice = random.SystemRandom().choice
Run Code Online (Sandbox Code Playgroud)