如何使用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)
我有一个伪随机数生成器,它根据用户提供的多项式生成二进制数。我用来生成这个的方法是 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)