0

这是我的第一个问题。英语不是我的第一语言。我有一个包含大约 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 行/秒)。有什么方法可以加快这个过程吗?

4

1 回答 1

1

您正在使用的 scrypt 算法故意缓慢且资源密集,以防止对加密密码的暴力攻击(更多信息:scrypt)。让它更快,例如减少轮数,会削弱加密的强度,所以你能做的很少。

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

于 2014-09-09T10:39:53.180 回答