1
파일 변경 사항을 확인하는 수단으로 sha1 해시를 사용하려고했는데 문제는 큰 파일 (50-100MB)의 해시를 계산할 때 문제가 발생한다는 것입니다. 메모리가 부족하여 치명적인 예외가 발생합니다.코르도바는 메모리가 부족한 상태에서 큰 파일의 sha1 해시를 계산합니다.
버전 정보 : 3.5
- 코르도바?
- lib-typedarrays (CryptoJS 용 모듈) latest?
- QJS 최신
여기 메신저 사용하여 무엇을 :
function _getFileChecksum(file){
var deferred = Q.defer();
if(typeof CryptoJS === 'undefined'){
if(DEBUG){
console.log('CryptoJS is required.');
}
return deferred.reject(new Error('CryptoJS is required.'));
}
var reader = new FileReader();
reader.onload = function (evt) {
if(DEBUG){
console.log('_getFileChecksum: reader finished loading');
}
var arrayBuffer = evt.target.result;
var wordArray = CryptoJS.lib.WordArray.create(arrayBuffer);
var hash = CryptoJS.SHA1(wordArray);
if(DEBUG){
console.log('_getFileChecksum: hash = '+hash);
}
deferred.resolve(hash);
};
reader.onerror = function(anError){
if(DEBUG){
console.log('_getFileChecksum: reader error');
}
deferred.reject(anError);
};
reader.readAsArrayBuffer(file);
return deferred.promise;
}
지금이 작은 파일에 대한 잘 작동합니다. 하지만 문제가 발생하는 큰 문제가 발생하면 아무도 내가 sha1을 계산하는 방법을 알고있는 응용 프로그램에서 메모리가 부족하지 않고 큰 파일을 가지고 있습니까?