javascript - 读取长文件并使用nodejs加密

标签 javascript node.js sjcl

这是我的第一个问题。英语不是我的母语。 我有一个包含大约 800K 行的文件。我必须使用 sjcl 库读取和加密它们。到目前为止,我唯一做的就是这几行:

var sjcl = require('sjcl/sjcl.js');
var fs = require('fs'),
    readline = require('readline'),
    stream = require('stream');
var instream = fs.createReadStream('data');
var outstream = new stream;
outstream.readable = true;
outstream.writable = true;

var rl = readline.createInterface({
    input: instream,
    output: outstream,
    terminal: false
});

rl.on('line', function(line) {
    var cred = line.toLowerCase()+line;
    var salt = sjcl.codec.utf8String.toBits(cred);
    var id = sjcl.misc.scrypt(cred,salt,2048,8,1,32);
    var ret = sjcl.codec.hex.fromBits(id);
    console.log(ret+":"+line);
    });

它可以工作,但是速度非常慢(10 行/秒)。有什么办法可以加快这个过程吗?

最佳答案

您使用的 scrypt 算法故意缓慢且占用大量资源,以防止针对加密密码的暴力攻击(更多信息请参见: scrypt )。使其更快,例如减少轮数,会削弱加密的强度,因此您无能为力。

加速计算的一个可能的解决方案是使用算法的 native 实现 node-scrypt例如,是一个围绕原始 C++ 库的 JS 包装器,尝试一下,您肯定会得到很大的改进,因为 jscl 是纯 JavaScript。

关于javascript - 读取长文件并使用nodejs加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25741769/

相关文章:

javascript - 在文本区域中显示不带逗号的二维数组

javascript - 如何在javascript中获取频率值?

node.js - 为什么我的流媒体应用程序没有完全显示图像?

javascript - "Invalid AES Block Size"SJCL解密

javascript - 安全的 Javascript 加密库?

javascript - 字符串拆分映射组合的时间复杂度

JavaScript onclick : how to pass the event variable?

javascript - 根据请求更改选项对象

node.js - RxJS:在 NodeJS 中处理 groupBy 和 Observable.fromEvents

java - 在 Android 应用程序中使用 JavaScript 库