这是我的第一个问题。英语不是我的母语。 我有一个包含大约 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/