Tengo un generador de números pseudoaleatorios que genera un número binario basado en un polinomio proporcionado por el usuario. El método que he usado para generar esto es LFSR. Ahora, si lo entiendo correctamente, debería cargar el archivo y convertirlo a formato binario para tomar cada bit siguiente de los datos leídos y usar la operación XOR con cada bit de la clave generada. El problema es que no tengo idea de cómo convertir el archivo cargado a binario de tal manera que luego pueda realizar operaciones XOR en cada bit del archivo con el bit clave. Lo único que sé es que debería usar <input type="file" @change="onFileSelected"/> para cargar el archivo. Agradecería cualquier ayuda de la comunidad.
Suponiendo que tiene una función getKeyBit() que devuelve un poco de la clave:
const getKeyByte = () => { const byte = [] // Get 8 key bits for (let i = 0; i < 8; ++i) { byte.push(getKeyBit()) } // Parse the byte string as base 2 return parseInt(byte.join(''), 2) } const encryptFile = (file) => { const fileReader = new FileReader() fileReader.readAsArrayBuffer(file) return new Promise(resolve => { fileReader.onload = () => { const buffer = new Uint8Array(fileReader.result) // Resolve the promsie with mapped Uint8Array resolve(buffer.map(byte => { // XOR each byte with a byte from the key return byte ^ getKeyByte() })) } }) }Asegúrese de esperar el resultado:
const encrypted = await encryptFile(file)