在将数据存储在json文件中之前,我使用加密技术对其进行了加密。问题是我只知道如何生成随机静脉。
我尝试浏览网络,但未找到任何相关信息。我也尝试过将iv存储在json文件中,但是它变得不可用。
我注释掉了html内容,因此可以在cmd提示符下使用它。
//const submit = document.getElementById('submit')
//const username = document.getElementById('username')
//const password = document.getElementById('password')
const crypto = require('crypto')
const fs = require('fs')
const iv = crypto.randomBytes(16)
let key = '3956349e7a64b865ddcb5bac3af67490'
function load(){
const raw_data = fs.readFileSync('LJib.json')
const data = JSON.parse(raw_data)
let decipher = crypto.createDecipheriv('aes-256-cbc', key, iv)
let decrypted = decipher.update(data, 'hex', 'utf-8')
decrypted += decipher.final('utf-8')
return JSON.parse(decrypted)
}
function save(data){
data = Buffer.from(JSON.stringify(data))
let cipher = crypto.createCipheriv('aes-256-cbc', key, iv)
let encrypted = cipher.update(data, 'utf-8', 'hex')
encrypted += cipher.final('hex')
encrypted = JSON.stringify(encrypted)
fs.writeFileSync('LJib.json', encrypted)
}
function main(){
submit.addEventListener('click', function() {
var data = load()
save(data)
})
}
save({'user' : 'password'})
console.log(load())
真的,我只需要一种不断获取相同iv的方法,而不是使用crypto.randomBytes(16)
随机获取一个。
答案 0 :(得分:0)
通常,IV应该是随机的而不是恒定的。 IV是公开的,因此您可以并且应该将其与加密的文本一起存储。最好的解决方案是使用标准格式进行加密,例如PKCS#7的封装数据,但是您需要一个不同的库,例如Forge。
由于IV通常具有固定的长度,因此您可以在将IV加密数据之前简单地在IV之前追加,然后将其存储在文件中,或者可以将其放入json结构(例如下面的示例),然后将结构保存在文件。请记住,在必须将原始二进制数据转换为“可打印的”字符串(例如:十六进制字符串,base 64等)之前,不能将其放入json结构中。
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v1902.01) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1902.01/providers/virtualbox.box
default: Download redirected to host: cloud.centos.org
==> default: Successfully added box 'centos/7' (v1902.01) for 'virtualbox'!
答案 1 :(得分:-1)
我只需要做
const iv = Buffer.alloc(16, 2)