技术解析

有没有大佬可以根据加密算法(base64ToUuid)写出解密算法(uuidToBase64)的,加密算法如下: 在这里先谢谢各位大佬啦
0
2021-08-09 23:11:17
idczone
const BASE64_KEYS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
const BASE64_VALUES = new Array(123);
for (let i = 0; i < 123; ++i) {
    BASE64_VALUES[i] = 64;
}

for (let i = 0; i < 64; ++i) {
    BASE64_VALUES[BASE64_KEYS.charCodeAt(i)] = i;
}
const HexChars = '0123456789abcdef'.split('');

let _t = ['', '', '', ''];
let UuidTemplate = _t.concat(_t, '-', _t, '-', _t, '-', _t, '-', _t, _t, _t);
let Indices = UuidTemplate.map(function (x, i) {
    return x === '-' ? NaN : i;
}).filter(isFinite);

// fcmR3XADNLgJ1ByKhqcC5Z -> fc991dd7-0033-4b80-9d41-c8a86a702e59
//49sjfkvnVPJJ8AhKbbuZbj
/**
 * base64 解码为 uuid
 * @param {String} base64 
 * @returns 
 * @example 
 * let test = base64ToUuid('fcmR3XADNLgJ1ByKhqcC5Z')
 * console.log(test) //fc991dd7-0033-4b80-9d41-c8a86a702e59
 */
function base64ToUuid(base64) {
    if (base64.length !== 22) {
        return base64;
    }
    UuidTemplate[0] = base64[0];
    UuidTemplate[1] = base64[1];
    for (let i = 2, j = 2; i < 22; i += 2) {
        let lhs = BASE64_VALUES[base64.charCodeAt(i)];
        let rhs = BASE64_VALUES[base64.charCodeAt(i + 1)];
        UuidTemplate[Indices[j++]] = HexChars[lhs >> 2];
        UuidTemplate[Indices[j++]] = HexChars[((lhs & 3) << 2) | rhs >> 4];
        UuidTemplate[Indices[j++]] = HexChars[rhs & 0xF];
    }
    return UuidTemplate.join('');
}
let test = base64ToUuid('fcmR3XADNLgJ1ByKhqcC5Z')
console.log(test)


/**
 * uuid 解码为 base64
 * @param {String} uuid 
 * @returns 
 *  * @example 
 * let test = uuidToBase64('fc991dd7-0033-4b80-9d41-c8a86a702e59')
 * console.log(test) //fcmR3XADNLgJ1ByKhqcC5Z
 */
function uuidToBase64(uuid) {
    
}

这不就是保留前 2 位不变,剩下的编码到 base64 ?
自己写写不行吗。

给我半天工资给你写

好的 我试试哈

嘿嘿,下次一定

解决了吗?看了下 CocosCreator 用的这个,之前 Nodejs 检查资源写了个 uuidToBase64,一会儿我找找

哈哈 还没有 我也是在搞这个呢

我晚上回家找一下

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服