使用node.js crypto库,我像这样对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);
});
i然后服用 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);
)来加密和解密简单的字符串时,它会完美地加密和解密。
问题是写作。解密dec
输出一个字符串。该字符串必须转换为二进制缓冲区,而不是写入文件。
现在像魅力一样工作:
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);
您可以使用node-qpdf软件包对PDF进行加密和解密。它使用QPDF。