Node.js encrypts large file using AES

后端 未结 3 1631
花落未央
花落未央 2020-12-08 12:34

I try to use following code to encrypt a file of 1 GB. But Node.js abort with \"FATAL ERROR: JS Allocation failed - process out of memory\". How can I deal with it?

3条回答
  •  既然无缘
    2020-12-08 13:21

    You could write the encrypted file back to disk instead of buffering the entire thing in memory:

    var fs = require('fs');
    var crypto = require('crypto');
    
    var key = '14189dc35ae35e75ff31d7502e245cd9bc7803838fbfd5c773cdcd79b8a28bbd';
    var cipher = crypto.createCipher('aes-256-cbc', key);
    var input = fs.createReadStream('test.txt');
    var output = fs.createWriteStream('test.txt.enc');
    
    input.pipe(cipher).pipe(output);
    
    output.on('finish', function() {
      console.log('Encrypted file written to disk!');
    });
    

提交回复
热议问题