【问题标题】:Speeding up AES decryption in Node js在 Node js 中加速 AES 解密
【发布时间】:2018-11-15 18:44:16
【问题描述】:

我想创建一个显示数据的网页,之前在服务器上解密。在 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)。我知道node js是单线程的,没有并发。那么,我怎样才能加快解密过程呢?我应该使用 Java/Python 而不是 node js,就我而言,由于多线程和并发性,java 是最适合这个过程的语言。

【问题讨论】:

  • 如果文件是相同的,并且永远不会通过添加新文件来更改或更改,那么缓存机制可以提供帮助。然后可以尝试生成另一个进程来解密文件并与父进程通信,例如通过文件锁定机制 My 2 cents

标签: javascript express aes node-crypto


【解决方案1】:

crypto-js 是纯 JavaScript AES 实现。它旨在在浏览器和 NodeJs 中运行。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多