JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://jamiebibbs.com/hosted/md5.js"></script>
<p>Enter save game:</p>
<textarea id="input" cols="100" rows="50" type="text"></textarea>
<div><button id="decodeButton">Decode</button></div>
<p>JSON Result:</p>
<textarea id="output" cols="100" rows="50" type="text"></textarea>
<p>Enter and change json result:</p>
<textarea id="jsonInput" cols="100" rows="50" type="text"></textarea>
<div><button id="encodeButton">Encode</button></div>
<p>You save game:</p>
<textarea id="jsonOutput" cols="100" rows="50" type="text"></textarea>

CSS

#output{margin-bottom:200px}

JavaScript

const ANTI_CHEAT_CODE = 'Fe12NAfA3R6z4k0z';
const SALT = 'af0ik392jrmt0nsfdghy0';
const CHARACTERS = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';

var input = document.getElementById('input');
var output = document.getElementById('output');
var jsonInput = document.getElementById('jsonInput');
var jsonOutput = document.getElementById('jsonOutput');
var decodeButton = document.getElementById('decodeButton');
var encodeButton = document.getElementById('encodeButton');
decodeButton.addEventListener('click', onDecodeButtonClick);
encodeButton.addEventListener('click', onEncodeButtonClick);

function onDecodeButtonClick(event)
{
    var string = input.value;
    var antiCheatCodeIndex = string.search(ANTI_CHEAT_CODE);
    var antiCheatCodeExist = (antiCheatCodeIndex != -1);
    if (antiCheatCodeExist) string = fromAntiCheatFormat(string);
    output.value = atob(string);
}

function fromAntiCheatFormat(string)
{
    var elements = string.split(ANTI_CHEAT_CODE);
    var data = unSprinkle(elements[0]);
    var hash = elements[1];
    var dataHash = getHash(data);
    if (dataHash = hash) return data;
    alert("Hash is bad");
}

function unSprinkle(string)
{
    var array = string.split("");
    var result = [];
    var counter = 0;
    while (counter < array.length)
    {
        result[counter / 2] = array[counter];
        counter += 2;
    }
    return result.join("");
}

function getHash(string)
{
    var charaters = string.split();
    charaters.sort();
    var sortedCharaters = charaters.join();
    return CryptoJS.MD5(sortedCharaters + SALT);
}

function onEncodeButtonClick(event)
{
    var string = jsonInput.value;
    var base64string = btoa(string);
    var result = sprinkle(base64string) + ANTI_CHEAT_CODE + getHash(base64string);
    jsonOutput.value = result;
}

function sprinkle(string)
{
    var characters;
    var randomIndex;
    var array = string.split("");
    var result = [];
    var counter = 0;
    while (counter <...