JSFiddle - React, Tailwind, and code Playground

by karthick6891

HTML

<input type="file" name="aFile">

<button id="btn">Text</button>

JavaScript

file = "TEST WORD"
function encrypt() {
  window.crypto.subtle.generateKey(
    {
      name: "AES-GCM",
      length:256,
    },
    true,
    ["encrypt", "decrypt"]
  )
  .then(function(key) {
    pks = key
    crypto.subtle.exportKey( "raw", key)
    .then(function(buf) { 
      newKey = new Int8Array(buf)
      exportedAsBase64 = _arrayBufferToBase64(buf);
    })
    .then(function() {
        fileString = file,
          n=fileString.indexOf(";base64,") + 8;
        X = _base64ToArrayBuffer(fileString.substring(n))
        crypto.subtle.encrypt({name: 'AES-GCM', iv: newKey}, pks, X)
        .then( function(buf) {
           newFile = new Int8Array(buf) 
           encrypted = _arrayBufferToBase64(buf);
        })
        .catch(function (err) {
          console.error(err);
        }); 
     
    })
  })
}
function _arrayBufferToBase64( buffer ) {
    var binary = '';
    var bytes = new Uint8Array( buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
    return window.btoa( binary );
}
function _base64ToArrayBuffer(base64) {
    var binary_string =  window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array( len );
    for (var i = 0; i < len; i++)        {
        bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
}

btn.addEventListener('click', function(){
encrypt();
})
/*file = document.getElementsByName('aFile')[0].files[0]
function encrypt() {
  window.crypto.subtle.generateKey(
    {
      name: "AES-GCM",
      length:256,
    },
    true,
    ["encrypt", "decrypt"]
  )
  .then(function(key) {
    pks = key
    crypto.subtle.exportKey( "raw", key)
    .then(function(buf) { 
      newKey = new Int8Array(buf)
      exportedAsBase64 = _arrayBufferToBase64(buf);
    })
    .then(function() {
      reader = new FileReader()
      reader.readAsDataURL(file)
      reader.onload = function() {
        fileString =...