如何使用Vue js实现基于同步流密码的密码系统

How to implement cryptosystem based on Synchronous Stream Cipher using Vue js

我有一个伪随机数生成器,它根据用户提供的多项式生成二进制数。我用来生成这个的方法是 LFSR。现在,如果我理解正确的话,我应该加载文件并将其转换为二进制形式,以便获取读取数据的每一位,并对生成的密钥的每一位使用异或运算。问题是我不知道如何将加载的文件转换为二进制文件,以便以后可以使用密钥位对文件的每一位执行异或运算。我唯一知道的是我应该使用 <input type="file" @change="onFileSelected"/> 来加载文件。如果社区提供任何帮助,我将不胜感激。

假设您有一个 getKeyBit() 函数 returns 一点关键:

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()
      }))
    } 
  })
}

请务必等待结果:

const encrypted = await encryptFile(file)