使用Node.js加密库,我加密了PDF,如下所示:
//encrypting the pdf
fs.readFile('./full.pdf', function (err,data) {
if (err) {
return console.log(err);
}
var cipher = crypto.createCipher('aes-256-cbc', encPassword);
var text = data;
var crypted = cipher.update(text,'utf8','hex');
crypted += cipher.final('hex');
console.log(crypted);
});
然后我拿crypted
并运行它:
var decipher = crypto.createDecipher('aes-256-cbc', encPassword);
var dec = decipher.update(args[0],'hex','utf8');
dec += decipher.final('utf8');
fs.writeFileSync('./output.pdf', dec);
./ output.pdf现在是一个空白页面,其中应该包含原始内容。
注意
当我使用相同的完全代码(不包括fs.writeFileSync('./output.pdf', dec);
)来加密和解密一个简单的字符串时,它会完美地加密和解密。
答案 0 :(得分:0)
问题在于写作。解密dec
输出一个字符串。该字符串必须转换为二进制缓冲区并将THAN写入文件。
现在就像魅力一样:
var decipher = crypto.createDecipher('aes-256-cbc', encPassword);
var dec = decipher.update(args[0],'hex','binary');
dec += decipher.final('binary');
var buffer = new Buffer(dec, "binary");
fs.writeFileSync('./output.pdf', buffer);
答案 1 :(得分:0)