Вы должны определенно использовать потоки или что-то подобное, чтобы избежать загрузки всего файла в вашу память.
В частности, используя Crypto JS, я видел, что можно выполнять прогрессивную Хеширование.
var sha256 = CryptoJS.algo.SHA256.create();
sha256.update("Message Part 1");
sha256.update("Message Part 2");
sha256.update("Message Part 3");
var hash = sha256.finalize();
Итак, используйте FileReader
для чтения частей файла, затем каждый раз, когда вы читаете часть, вы обновляете sha256, пока больше нечего читать.
См .:
API для чтения файлов больших файлов