2014-09-09 11 views
0

이것은 첫 번째 질문입니다. 영어가 제 첫 언어가 아닙니다. 약 800K 줄을 포함하는 파일이 있습니다. 나는 sjcl 라이브러리를 사용하여 그것들을 읽고 암호화해야한다. 지금까지 내가 한 유일한 작업은 다음과 같습니다.긴 파일을 읽고 nodejs를 사용하여 암호 화

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 줄/초). 프로세스 속도를 높일 수있는 방법이 있습니까?

+0

암호화 라이브러리를 사용해 보셨습니까? sjcl은 자바 스크립트 전용 라이브러리이므로 코드가 느린 것 같습니다. Crypto 함수는 매우 CPU 집약적이므로, 좋은 퍼포먼스가 필요하다면, 자바 스크립트 만 쓰는 것이 아니라 C로 쓰여진 라이브러리를 찾아야한다고 생각합니다. –

답변

1

사용중인 암호화 알고리즘은 의도적으로 느리고 자원 집약적이어서 암호화 된 암호에 대한 무차별 대입 공격을 막습니다 (자세한 내용은 scrypt). 예를 들어 라운드 수를 줄이는 등 빠른 작업을 수행하면 암호화 강도가 약해질 수 있으므로 수행 할 수있는 작업은 거의 없습니다.

알고리즘의 기본 구현을 사용하는 것이 가능한 해결책은 node-scrypt 예를 들어 원래의 C++ 라이브러리를 둘러싼 JS 래퍼입니다. 시도해보십시오. jscl은 다음과 같이 크게 개선해야합니다. 순수한 JavaScript.