crypto.createCipher() 不带初始化向量已经自 NodeJS v10.0.0
起被废弃,请改用crypto.createCipheriv()。
你也可以使用stream.pipeline() 来代替使用pipe
方法并将其转换为promise或async/await流程中的操作(使代码更加易于使用promise或async/await编写)。
const {createReadStream, createWriteStream} = require('fs');
const {pipeline} = require('stream');
const {randomBytes, createCipheriv} = require('crypto');
const {promisify} = require('util');
const key = randomBytes(32);
const iv = randomBytes(16);
promisify(pipeline)(
createReadStream('./text.txt'),
createCipheriv('aes-256-cbc', key, iv),
createWriteStream('./text.txt.enc')
)
.then(() => {})
.catch(err => {});
使用NodeJS 15+,您可以简化它(跳过promisify
部分)
const {createReadStream, createWriteStream} = require('fs');
const {pipeline} = require('stream/promises');
const {randomBytes, createCipheriv} = require('crypto');
const key = randomBytes(32);
const iv = randomBytes(16);
pipeline(
createReadStream('./text.txt'),
createCipheriv('aes-256-cbc', key, iv),
createWriteStream('./text.txt.enc')
)
.then(() => {})
.catch(err => {});
output
上监听finish
事件。 - mscdexcrypto.createDecipher
替代crypto.createCipher
来以完全相同的方式进行解密。 - Ryan PlantcreateCipher
已被弃用。 - SamB