JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://pastebin.com/raw/cuvrkFfd"></script>
<input type="file" id="file-input" onchange="handleFile(this)">
<button onclick="useEncryptionForFile()" id="encrypt-file">Encrypt File</button>
<button onclick="useDecryptionForFile()" id="decrypt-file">Decrypt File</button>
<textarea id="output"></textarea>
<img id="example">

CSS

textarea {
  width: 500px;
  height: 400px;
  margin-top: 10px;
}

button {
  border: 1px solid grey;
}

JavaScript

let key = "ThisIsMyGreatKey";
let iv = "ABCDEFGHabcdefgh";
let useEncryption, useDecryption;


function encrypt(text) {
	let encrypted = CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(key), {
		iv: CryptoJS.enc.Utf8.parse(iv),
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	});

	return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}

function decrypt(encrypted) {
	let decrypted = CryptoJS.AES.decrypt(encrypted, CryptoJS.enc.Utf8.parse(key), {
		iv: CryptoJS.enc.Utf8.parse(iv),
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	});

	// Should be Latin1 for files?
	return decrypted.toString(CryptoJS.enc.Utf8);
}

let input = document.getElementById("file-input");
let output = document.getElementById("output");
let example = document.getElementById("example");

function handleFile(element) {
	if (element.files && element.files[0]) {
		let file = element.files[0];
    if (useDecryption) {
    	decryptFile(file);
    } else {
    	encryptFile(file);
    }
	}
}

function encryptFile(file) {
	let reader = new FileReader();

	reader.onload = function (e) {
		let encrypted = CryptoJS.AES.encrypt(e.target.result, CryptoJS.enc.Utf8.parse(key), {
			iv: CryptoJS.enc.Utf8.parse(iv),
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		});
    
    output.textContent = encrypted;

		let a = document.createElement("a");
		a.setAttribute('href', 'data:application/octet-stream,' + encrypted);
		a.setAttribute('download', file.name + '.encrypted');
		a.click();
	};

	reader.readAsDataURL(file);
}

function decryptFile(file) {
	let reader = new FileReader();
	reader.onload = function (e) {
		let decrypted = CryptoJS.AES.decrypt(e.target.result, CryptoJS.enc.Utf8.parse(key), {
			iv: CryptoJS.enc.Utf8.parse(iv),
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		});
    
    // Decrypted is emtpy    
    output.textContent = decrypted;
    
    // Desperate try to get something working
		example.src = "data:image/png;base64," +...