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;
}