Ускорение дешифрования AES в Node js - PullRequest
0 голосов
/ 15 ноября 2018

Я хотел создать веб-страницу, на которой будут отображаться данные, ранее расшифрованные на сервере. На сервере в app.js все данные из одной папки считываются, а затем дешифруются.

var http = require('http');
var path = require('path');
var express = require('express');
var fs = require('fs');
var app = express();
var CryptoJS = require("crypto-js");
app.set('view engine', 'ejs');

var bytes = [];

var markers = fs.readdirSync("views/images");

for (var i = 0; i < markers.length ; ++i) {
bytes[i] = fs.readFileSync("views/images/" + 
markers[i]).toString('utf8');
};

Чем данные расшифровываются и отправляются на страницу

app.get('/index', function(req, res) {
app.use(express.static(__dirname + '/views'));
try{
      for (var i = 0; i < markers.length ; ++i) {
      bytes[i] = CryptoJS.AES.decrypt(markers[i],Rf3hgf93).toString(CryptoJS.enc.Utf8);                       
       };
      res.render('index',{bytes:bytes});

      }catch (err){
         res.render('index',{bytes:''});
         console.log("error");
      };

  });

Дело в том, что для расшифровки всех этих файлов и отправки их клиенту требуется около 30 секунд. Есть около 35 расшифрованных текстовых файлов (каждый около 5 МБ). Я знаю, что узел js является однопоточным и нет параллелизма. Итак, как я могу ускорить процесс расшифровки? Должен ли я использовать Java / Python вместо узла js, насколько мне известно, java является наиболее подходящим языком для этого процесса из-за многопоточности и параллелизма.

1 Ответ

0 голосов
/ 16 ноября 2018

crypto-js - это чистая реализация JavaScript AES.Он предназначен для работы как в браузере, так и в NodeJ.

Для чистого приложения NodeJs используйте встроенный crypto API, который является нативным и, как таковой, намного быстрее.

...