JSFiddle - React, Tailwind, and code Playground
HTML
<input type="file" id="chooseFile"/>
<a id="downloadResult">Download Result</a>
<div id="result"></div>
JavaScript
var resultDataBuffer;
function encrypt(buffer) {
var encrypters = [172, 115, 254, 242, 170, 186, 109, 171, 48, 58, 139, 167, 222, 13, 21, 33, 74];
var bytes = new Uint8Array(buffer);
var output = "";
for (var i = 0; i < bytes.length; i++) {
var oldValue = bytes[i];
var encrypter = encrypters[i % encrypters.length];
bytes[i] = oldValue ^ encrypter;
output += String.fromCharCode(bytes[i]);
}
resultDataBuffer = buffer;
return output;
}
document.querySelector('#chooseFile').addEventListener('change', function() {
var reader = new FileReader();
reader.onload = function(){
$('#result').text(encrypt(this.result));
var blob = new Blob([resultDataBuffer], { 'type': 'application/octet-binary' });
var objectUrl = URL.createObjectURL(blob);
$('#downloadResult').attr('href', objectUrl);
}
reader.readAsArrayBuffer(this.files[0]);
}, false);