function authcode(mystr, operation = 'DECODE', key = '', expiry = 0) { const ckey_length = 4; key = md5(key); const keya = md5(key.substring(0, 16)); const keyb = md5(key.substring(16, 32)); const keyc = ckey_length && operation === 'DECODE' ? mystr.substring(0, ckey_length) : substr(md5(Date.now().toString()), -ckey_length); const cryptkey = keya + md5(keya + keyc); const key_length = cryptkey.length; mystr = operation === 'DECODE' ? atob(mystr.substring(ckey_length)) : ${expiry ? expiry + Date.now() : '0000000000'}${md5(mystr + keyb).substring(0, 16)}${mystr}; const mystr_length = mystr.length; let result = ''; const box = Array.from({ length: 256 }, (, i) => i); const rndkey = Array.from({ length: 256 }, (, i) => cryptkey.charCodeAt(i % key_length)); for (let j = 0, i = 0; i < 256; i++) { j = (j + box[i] + rndkey[i]) % 256; const tmp = box[i]; box[i] = box[j]; box[j] = tmp; } let a = 0, j = 0; for (let i = 0; i < mystr_length; i++) { a = (a + 1) % 256; j = (j + box[a]) % 256; const tmp = box[a]; box[a] = box[j]; box[j] = tmp; result += String.fromCharCode(mystr.charCodeAt(i) ^ box[(box[a] + box[j]) % 256]); } if (operation === 'DECODE') { if ((result.substring(0, 10) === '0' || parseInt(result.substring(0, 10)) - Date.now() > 0) && result.substring(10, 26) === md5(result.substring(26) + keyb).substring(0, 16)) { return result.substring(26); } else { return ''; } } else { return keyc + btoa(result).replace(/=/g, ''); } }

PHP Authcode 函数转换为 JavaScript 代码

原文地址: https://www.cveoy.top/t/topic/nc7H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录