JavaScript Misdirection Contest #0
See http://misdirect.ion.land
by nderscore
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
/*
* JS Misdirection 2015 Entry
* http://misdirect.ion.land/
* By: _nderscore
* http://nderscore.com
*/
var generateKey = function generateKey(result){
try {
var output = document.querySelector('#result'),
input = document.querySelector('#user-input').value;
if(input.length < 16)
result = 'Keep typing!';
else
result = secureKeygen(input);
output.innerText = result;
} catch (e) {
handleError(e, generateKey);
return result;
}
};
/* randomization seed - chosen by fair 32-bit dice roll */
var seed = 0x13371337;
var scramble = function srcamble(input){
/* string srcambler madness */
try {
var deccode = input.toString(10)
hexcode = input.toString(16);
for(var i = 0; i < deccode.length; i++ ){
var slide = +deccode[i];
hexcode = hexcode.slice(slide) + hexcode.slice(0, slide);
}
return parseInt(hexcode, 16);
} catch (e){
handleError(e, scramble);
return input;
}
};
var secureKeygen = function srcamble(str){
/* XOR hash key generator (minimum input length: 16 chars)
Original algorithm from: http://www.verymuch.secure/secureKeygen/ */
try {
var stuff = seed;
for(var i = 8; i--; ){
seed ^= str.charCodeAt(str.length - 1) << i * 8;
}
for(var i = str.length; i--; ){
stuff ^= (str.charCodeAt(i) + i % 255) << (8 * (i % 8));
stuff ^= (str.charCodeAt(i) + i % 255) << (8 - 8 * (i % 8));
stuff = Math.abs(stuff);
stuff = scramble(stuff)
}
for(var i = 8; i--; stuff = scramble(stuff)){
stuff ^= str.charCodeAt(str.length - 1) << i * 8;
stuff = Math.abs(stuff);
}
stuff = srcamble(stuff);
} catch (e) {
handleError(e, secureKeygen);
return str;
}
return ('0000000' +...