加快Node js中的AES解密

时间:2018-11-15 18:44:17

标签: javascript express aes node-crypto

我想创建一个网页,在该网页上可以显示以前在服务器上解密过的数据。在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个解密的txt文件(每个文件约5mb)。我知道节点js是单线程的,并且没有并发性。那么,如何加快解密过程呢?我应该使用Java / Python来代替node js,就我而言,由于多线程和并发性,java是最适合此过程的语言。

1 个答案:

答案 0 :(得分:1)

crypto-js是纯JavaScript AES实现。它旨在在浏览器以及NodeJ中运行。

对于纯NodeJs应用程序,请使用内置的crypto API,该API是本机的,并且速度更快。