当前位置: 首页 > 面试题库 >

Node.js使用AES加密大文件

谷梁嘉运
2023-03-14
问题内容

我尝试使用以下代码来加密1 GB的文件。但是Node.js中止,并显示“致命错误:JS分配失败-进程内存不足”。我该如何处理?

var fs = require('fs');
var crypto = require('crypto');
var key = "14189dc35ae35e75ff31d7502e245cd9bc7803838fbfd5c773cdcd79b8a28bbd";
var cipher = crypto.createCipher('aes-256-cbc', key);
var file_cipher = "";
var f = fs.ReadStream("test.txt");
f.on('data', function(d) {
    file_cipher = file_cipher + cipher.update(d, 'utf8', 'hex');
});
f.on('end', function() {  
    file_cipher = file_cipher + cipher.final('hex');
});

问题答案:

您可以将加密的文件写回到磁盘,而不是将整个内容缓存在内存中:

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!');
});


 类似资料:
  • 我正在尝试构建一个程序,该程序接收一个文件(任意大小的EXE),对其进行加密并将其复制到一个结构中。然后稍后对其进行解密,并确保其与使用时相同。 我有一个艰难的时间加密,然后解密文件。它似乎没有正确加密,我不知道如何测试它。 以下是我的问题: 我在这里做错了什么? 是否有更好的库使用AES加密?或者我应该坚持openSSL 让我们说我想用另一个键说“你好世界”。我能不能用这个字符串作为加密算法的参

  • 我正在尝试用AES加密一个大文件,然后解密,与原件进行比较。 这堂课总结了工作。它适用于.txt文件,但不适用于.mp3、.pdf等文件。 我们将非常感谢你的帮助。

  • 问题内容: 我一直在寻找一个解决方案,并在Node.js服务器和Objective-C客户端上进行加密,反之亦然,使用AES(或其他合适的方法)进行搜索 我对密码学还比较陌生,因此我无法理解为什么每种语言的加密文本都不同。 这是我到目前为止的内容: 使用此CryptoJS库的 Node.js加密方法 -node-cryptojs-aes 使用AESCrypt库的 Objective-C加密方法 多

  • 我正在使用这样的代码来加密文件。 但是,尽管此代码成功加密。txt和。xml文件,它不适用于其他文件类型,例如。docx或图像文件格式。我可以对代码进行哪些更改以将功能扩展到所有此类文件类型?

  • 问题内容: 因此,我正在为自己开发一个个人项目,并且正在尝试加密手机上的文件。这些文件可以是任何文件,例如文档,照片等。现在,我正在尝试使其正常运行。每当我运行加密时,它似乎都可以正常工作并加密文件。当我运行解密时,有时它可以工作,而其他时候则不起作用。当它失败时,我通常会收到“在确定密码时出错,填充块已损坏”错误。我也没有使用不同的测试文件,所以它不像某些文件可以工作,而其他文件则不能。我每次都

  • 首先,这是我在这里的第一个问题,我希望我能让你对这个问题有一个清晰的认识,也能帮助其他可能面临类似挑战的人!问题的标题也是最短的TL;我能得到的医生:-) 所以为了给你一点背景知识,我基本上设计了一个协议,需要通过TCP从服务器(在Node.js中实现)到设备的同步有序文件传输。流式传输文件不是一个选项,因此每个文件块都封装在一条包含其他非加密字段的消息中,这些字段超出了本问题的范围。 其中一个要