From 5f268efcae4878f2890b3ac5c94680624448f915 Mon Sep 17 00:00:00 2001 From: Felix Pankratz Date: Wed, 30 Nov 2022 19:30:06 +0100 Subject: [PATCH] add crypto magic verification thing --- script.js | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/script.js b/script.js index 4425d81..e934173 100644 --- a/script.js +++ b/script.js @@ -52,14 +52,19 @@ let fields = [ const FREE_FIELD_TEXT = "Freies Parken" +const seed = Date.now().toString(); +var prng_hash_seed = cyrb128(seed); +let rand = sfc32(prng_hash_seed[0], prng_hash_seed[1], prng_hash_seed[2], prng_hash_seed[3]); + let shuffled = fields - .map(value => ({ value, sort: Math.random() })) + .map(value => ({ value, sort: rand() })) .sort((a, b) => a.sort - b.sort) .map(({ value }) => value) shuffled.splice(12, 0, FREE_FIELD_TEXT); function generateTable() { + let table = document.querySelector("table"); let thead = table.createTHead(); let row = null;//thead.insertRow(); @@ -94,7 +99,52 @@ function generateTable() { }); } +// hash function, thx stackoverflow :3 +function cyrb128(str) { + let h1 = 1779033703, h2 = 3144134277, + h3 = 1013904242, h4 = 2773480762; + for (let i = 0, k; i < str.length; i++) { + k = str.charCodeAt(i); + h1 = h2 ^ Math.imul(h1 ^ k, 597399067); + h2 = h3 ^ Math.imul(h2 ^ k, 2869860233); + h3 = h4 ^ Math.imul(h3 ^ k, 951274213); + h4 = h1 ^ Math.imul(h4 ^ k, 2716044179); + } + h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067); + h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233); + h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213); + h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179); + return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0]; +} + +function sfc32(a, b, c, d) { + return function() { + a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0; + var t = (a + b) | 0; + a = b ^ b >>> 9; + b = c + (c << 3) | 0; + c = (c << 21 | c >>> 11); + d = d + 1 | 0; + t = t + d | 0; + c = c + t | 0; + return (t >>> 0) / 4294967296; + } +} + +function mulberry32(a) { + return function() { + var t = a += 0x6D2B79F5; + t = Math.imul(t ^ t >>> 15, t | 1); + t ^= t + Math.imul(t ^ t >>> 7, t | 61); + return ((t ^ t >>> 14) >>> 0) / 4294967296; + } +} + + generateTable(); const center_field = document.querySelector('#center-field'); center_field.innerHTML = '7 vs. Wild Logo' +let seed_elem = document.createElement('p'); +seed_elem.innerText = seed; +document.body.appendChild(seed_elem);