Javascript 对paygOPS中的令牌进行解码和编码

Javascript 对paygOPS中的令牌进行解码和编码,javascript,decode,encode,Javascript,Decode,Encode,我有一个基于下面指定的脚本创建的程序 值的编码 该值通过屏蔽 “起始代码”中的值。这是通过将值添加到 “起始代码”的最后3位,如果结果值超过 999,然后从该值中减去1000。例如,如果代码 是“123456 789”,并且要编码的值是50,即结果代码 编码值为“123456 839”。解码是由 将“起始代码”基数(最后3位)减去基数 接收到的代码的(最后3位)。例如,如果收到 代码是123456829,基数是829。从829中减去789得到 40这是一个值。如果获得的值为负值,则为1000 需

我有一个基于下面指定的脚本创建的程序

值的编码

该值通过屏蔽 “起始代码”中的值。这是通过将值添加到 “起始代码”的最后3位,如果结果值超过 999,然后从该值中减去1000。例如,如果代码 是“123456 789”,并且要编码的值是50,即结果代码 编码值为“123456 839”。解码是由 将“起始代码”基数(最后3位)减去基数 接收到的代码的(最后3位)。例如,如果收到 代码是123456829,基数是829。从829中减去789得到 40这是一个值。如果获得的值为负值,则为1000 需要添加

解码设备上的代码

  • 对输入代码中的值进行解码
  • 按照“值的编码”中的步骤,将该值的编码添加到起始代码中,生成“基本代码” 部分
  • 在每次迭代中,通过“代码生成函数”传递“基本代码”X次,X是最后一次计数+30: 3.1.将结果代码中的“代码库”替换为“编码代码库”。例如,如果步骤3的结果代码为“234567 890”,则最终代码为“234567839”(如果值为 编码为50,基数为789(如上例所示) 3.2.如果当前X严格高于上一次计数,我们将结果代码与输入代码进行比较(如果匹配)。如果是 匹配,则代码有效,我们返回值。如果不是我们 继续迭代
  • 如果到达循环末尾,但未找到匹配项,则代码无效(已使用或正确无效)
  • 到目前为止,我已经根据第一段创建了一段代码,但未能理解第二段

    let code  = 123456;
    let base  = 789;
    let units = 50;
    let originalUnits=0;
    //units = 1000;
    let maxBase=1000;
    console.log("Default: "+code.toString()+base);
    let token = encodeToken(base,units,code);
    
    //token = "123456383";
    //token="123456967";
    console.log("Token: "+token);
    
    let decodedBase = decodeToken(token,base);
    console.log("Decoded: "+decodedBase);
    
    console.log(isValid(decodedBase));
    
    function getUnit(userBase,sysBase) {
        let resultUnit = userBase-sysBase;
        if(resultUnit<=0) resultUnit = (resultUnit+maxBase);
        return resultUnit;
    }
    
    function encodeToken(base,units,code) {
        if(units != Math.floor(units)){
            //originalUnits = units;
            //units = Math.ceil(units);
        }
        let key = (base + units);
        if(key>maxBase){
            if(key>9999) return false;
            key = (key-maxBase);
        }
        return code.toString()+key;
    }
    
    function decodeToken(token,base) {
        if(token.toString().length!==9)return [0,0];
        let key = token.toString().substring(6,9);
        let resultUnit = getUnit(key,base);
        return resultUnit;
    }
    
    let code=123456;
    设基数=789;
    单位=50;
    设原始单元=0;
    //单位=1000;
    设maxBase=1000;
    log(“默认值:+code.toString()+base”);
    let token=encodeToken(基数、单位、代码);
    //token=“123456383”;
    //token=“123456967”;
    console.log(“令牌:+Token”);
    设decodedBase=decodeToken(令牌,基);
    log(“解码:+decodedBase”);
    log(isValid(decodedBase));
    函数getUnit(userBase、sysBase){
    让resultUnit=userBase sysBase;
    如果(resultUnitmaxBase){
    如果(键>9999)返回false;
    key=(key maxBase);
    }
    返回代码.toString()+键;
    }
    功能解码令牌(令牌,基本){
    if(token.toString().length!==9)返回[0,0];
    让key=token.toString().substring(6,9);
    让resultUnit=getUnit(键,基);
    返回结果;
    }
    
    我想把第二段解释成一个代码,我不明白

    谢谢