带有zip文件的NodeJS加密包

时间:2016-12-20 01:44:56

标签: node.js

我正在关注此网址上的加密示例(下面的代码示例)(http://lollyrock.com/articles/nodejs-encryption/)。问题是我正在加密.zip文件,这似乎工作得很好。解密就是问题所在。如果我在jpg之类的内容上执行下面的代码示例,那么图片就可以了。但如果我通过它运行一个zip文件并尝试unzip结果,我会收到以下错误:

End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.

代码:

// Nodejs encryption of buffers
var crypto = require('crypto'),
    algorithm = 'aes-256-ctr',
    password = 'd6F3Efeq';

var fs = require('fs');
var zlib = require('zlib');

// input file
var r = fs.createReadStream('file.txt');
// zip content
var zip = zlib.createGzip();
// encrypt content
var encrypt = crypto.createCipher(algorithm, password);
// decrypt content
var decrypt = crypto.createDecipher(algorithm, password)
// unzip content
var unzip = zlib.createGunzip();
// write file
var w = fs.createWriteStream('file.out.txt');

// start pipe
r.pipe(zip).pipe(encrypt).pipe(decrypt).pipe(unzip).pipe(w);

1 个答案:

答案 0 :(得分:0)

事实证明,我的代码中的差异在于它是从请求流中读取的。显然你不能通过解密通过gunzip管道请求流?我不确定为什么。

但是,如果我将流与文件相同,然后通过gunzip和解密运行它就可以了。

如果有人对原因有任何意见,我至少要明白!