V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
microBlock
V2EX  ›  JavaScript

有没有大佬可以根据加密算法(base64ToUuid)写出解密算法(uuidToBase64)的,加密算法如下: 在这里先谢谢各位大佬啦

  •  
  •   microBlock · 2021-03-12 17:14:25 +08:00 · 2067 次点击
    这是一个创建于 1356 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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) {
        
    }
    
    7 条回复    2021-03-13 15:30:32 +08:00
    msg7086
        1
    msg7086  
       2021-03-12 18:14:51 +08:00 via Android
    这不就是保留前 2 位不变,剩下的编码到 base64 ?
    自己写写不行吗。
    newmlp
        2
    newmlp  
       2021-03-12 18:25:36 +08:00
    给我半天工资给你写
    microBlock
        3
    microBlock  
    OP
       2021-03-12 21:22:19 +08:00 via iPhone
    @msg7086 好的 我试试哈
    microBlock
        4
    microBlock  
    OP
       2021-03-12 21:23:21 +08:00 via iPhone
    @newmlp 嘿嘿,下次一定
    TanMusong
        5
    TanMusong  
       2021-03-13 10:15:07 +08:00
    解决了吗?看了下 CocosCreator 用的这个,之前 Nodejs 检查资源写了个 uuidToBase64,一会儿我找找
    microBlock
        6
    microBlock  
    OP
       2021-03-13 13:57:49 +08:00 via iPhone
    @TanMusong 哈哈 还没有 我也是在搞这个呢
    TanMusong
        7
    TanMusong  
       2021-03-13 15:30:32 +08:00
    @microBlock 我晚上回家找一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.