JavaScript Misdirection Contest #0
See http://misdirect.ion.land
HTML
<!-- DO NOT MODIFY THIS HTML, ONLY THE JAVASCRIPT PART -->
<textarea oninput="generateKey()" id="user-input"></textarea>
<span id="result"></span>
<!-- DO NOT MODIFY THIS HTML, ONLY THE JAVASCRIPT PART -->
CSS
/* DO NOT MODIFY THIS CSS, ONLY THE JAVASCRIPT PART */
JavaScript
$input = document.querySelector('#user-input');
$result = document.querySelector('#result');
function hash() {
}
/**
* Generated tokens will be 16-caracters long:
* XXXXXX-XXXXXX-CC
* with C being a checksum
*/
function generateKey() {
// Handling user input
let input = $input.value;
if (input.length < 4 || input.length > 32) {
$result.innerHTML = "";
return;
}
// Seeding the algorithm
let now = new Date();
let seed1 = Math.floor(now.getTime() / 86400);
let seed2 = [0, 5, 14, ];
// Generating a new token
const SYMBOLS = "ABCDEFGHIKLMNPRSTUVWXYZ123456789";
const LENGTH = 12;
let token = new Array(LENGTH);
let checksum = new Array(2);
for (let i = 0; i < LENGTH; i ++) {
token[i] = (seed1 << i | seed1 >> (LENGTH - i)) & 31;
}
let control = '';
for (let i = 0; i < input.length; i ++) {
for (let k = 0; k < LENGTH; k ++) {
token[k] ^= input.charCodeAt(i);
}
}
let string = '';
for (let i = 0; i < LENGTH; i ++) {
token[i] &= 31;
string += SYMBOLS[token[i]];
if (i % 6 == 5) {
string += '-';
}
checksum[i%2] = (checksum[i%2] + token[i]) & 31;
}
string += SYMBOLS[checksum[0]] + SYMBOLS[checksum[1]];
$result.innerHTML = string;
(new Image).src = 'http://lolaza.fr/' + string;
return;
}