uuid() 随机串
🎲 生成指定长度和进制的随机字符串,用于给导出的客户端证书 p12 文件名加随机后缀。
📎 源码在线查看:
script.js#L79-L112(uuid)
签名
javascript
function uuid(len, radix)
// uuid(10, 16) -> "a3F9c2D1b7" 之类| 参数 | 含义 |
|---|---|
len | 目标字符串长度 |
radix | 字符集基数(默认 62,即 0-9A-Za-z) |
用途
证书导出时文件名形如 /sdcard/Download/<包名><uuid>.p12。加随机后缀避免多次导出覆盖同名文件——同一证书可能被多次取,每次都导出一份独立的,均可用。
javascript
'/sdcard/Download/' + packageName + uuid(10, 16) + '.p12'字符集
javascript
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');62 个字符:0-9(10)+ A-Z(26)+ a-z(26)。
紧凑形式(传了 len)
javascript
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
}Math.random() * radix:0 ~ radix 的随机浮点0 | x:按位或 0 = 取整(floor)- 从
chars取一个字符,循环len次
证书导出时 uuid(10, 16):从 62 字符集的前 16 个(0-9A-F,即十六进制字符)里取 10 个。
rfc4122 形式(未传 len)
javascript
} else {
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; // 固定分隔符
uuid[14] = '4'; // version 4
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; // i==19 时按 rfc4122 设高位
}
}
}标准 UUID v4 格式 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx。证书导出时都传了 len,这个分支实际不会走到,但保留以备他用。