在解密具有内容的加密pdf之后,解密的结果为空

时间:2014-01-21 14:45:28

标签: node.js pdf encryption cryptography

使用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);)来加密和解密一个简单的字符串时,它会完美地加密和解密。

2 个答案:

答案 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)

您可以使用node-qpdf包来加密和解密PDF。它使用qpdf