|
420 | 420 | } |
421 | 421 | </style> |
422 | 422 | <script type="module" defer> |
| 423 | + function convertBase(str, fromBase, toBase) { |
| 424 | + const DIGITS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"; |
| 425 | + const add = (x, y, base) => { |
| 426 | + let z = []; |
| 427 | + const n = Math.max(x.length, y.length); |
| 428 | + let carry = 0; |
| 429 | + let i = 0; |
| 430 | + while (i < n || carry) { |
| 431 | + const xi = i < x.length ? x[i] : 0; |
| 432 | + const yi = i < y.length ? y[i] : 0; |
| 433 | + const zi = carry + xi + yi; |
| 434 | + z.push(zi % base); |
| 435 | + carry = Math.floor(zi / base); |
| 436 | + i++; |
| 437 | + } |
| 438 | + return z; |
| 439 | + }; |
| 440 | + const multiplyByNumber = (num, x, base) => { |
| 441 | + if (num < 0) return null; |
| 442 | + if (num == 0) return []; |
| 443 | + |
| 444 | + let result = []; |
| 445 | + let power = x; |
| 446 | + while (true) { |
| 447 | + num & 1 && (result = add(result, power, base)); |
| 448 | + num = num >> 1; |
| 449 | + if (num === 0) break; |
| 450 | + power = add(power, power, base); |
| 451 | + } |
| 452 | + |
| 453 | + return result; |
| 454 | + }; |
| 455 | + const parseToDigitsArray = (str, base) => { |
| 456 | + const digits = str.split(''); |
| 457 | + let arr = []; |
| 458 | + for (let i = digits.length - 1; i >= 0; i--) { |
| 459 | + const n = DIGITS.indexOf(digits[i]) |
| 460 | + if (n == -1) return null; |
| 461 | + arr.push(n); |
| 462 | + } |
| 463 | + return arr; |
| 464 | + }; |
| 465 | + const digits = parseToDigitsArray(str, fromBase); |
| 466 | + if (digits === null) return null; |
| 467 | + let outArray = []; |
| 468 | + let power = [1]; |
| 469 | + for (let i = 0; i < digits.length; i++) { |
| 470 | + digits[i] && (outArray = add(outArray, multiplyByNumber(digits[i], power, toBase), toBase)); |
| 471 | + power = multiplyByNumber(fromBase, power, toBase); |
| 472 | + }; |
| 473 | + let out = ''; |
| 474 | + for (let i = outArray.length - 1; i >= 0; i--) |
| 475 | + out += DIGITS[outArray[i]]; |
| 476 | + return out; |
| 477 | + } |
| 478 | + const encode = (str, key) => { |
| 479 | + str = reverseString(str); |
| 480 | + let encoded = ''; |
| 481 | + for (let i = 0; i < str.length; i++) { |
| 482 | + const encodedCharCode = str.charCodeAt(i) ^ key.charCodeAt(i % key.length); |
| 483 | + encoded += encodedCharCode.toString().padStart(2, '0'); |
| 484 | + }; |
| 485 | + return encoded; |
| 486 | + }; |
423 | 487 | window.addEventListener('load', async function () { |
424 | 488 | await Clerk.load(); |
425 | 489 | if (!Clerk || !Clerk.user || !Clerk.user.id) { |
|
440 | 504 | const keye = document.getElementById('key'); |
441 | 505 | const uidc = document.getElementById('uidc'); |
442 | 506 | const keyc = document.getElementById('keyc'); |
443 | | - const uid = auth(cuid.replace('user_','').split('').reverse().join('')); |
444 | | - const key = auth(ckey.replace('idn_', '').split('').reverse().join('')); |
| 507 | + const uid = convertBase(encode(auth(cuid.replace('user_','').split('').reverse().join('')),window.location.href),10,64); |
| 508 | + const key = convertBase(encode(auth(ckey.replace('idn_', '').split('').reverse().join('')),window.location.href),10,64); |
445 | 509 | uide.innerHTML = uid; |
446 | 510 | keye.innerHTML = key; |
447 | 511 | uide.addEventListener("click", async () => { |
|
0 commit comments