【问题标题】:How to send encrypted text from node js and decrypt in typescript?如何从节点 js 发送加密文本并在打字稿中解密?
【发布时间】:2019-06-30 06:11:34
【问题描述】:

我正在index.js文件中的node.js中制作firebase云功能,

exports.calculatePrice = functions.https.onRequest((request, response) => {
    cors(request, response, () => {
         var fare = 10; 
         response.send(request.query.distance * fare);
    })
});

这里response.send(request.query.distance * fare)是根据行驶距离和票价计算的总票价..

这里我需要将此response.send(request.query.distance * fare) 作为安全数据发送并需要在打字稿中接收它,

let distance = 20;
this.http.get('https://us-central1-sample-project.cloudfunctions.net/calculatePrice/?distance=' + distance).subscribe(data => {
    this.finalFare = data;
})

我还需要发送在打字稿中加密的distance 并获取加密值,并需要在node js 中解密..

简单来说,在获取this.http.get(https://us-central1-sample-......) 中的数据时,我需要传递加密距离并需要在index.js 中获取它,并且在完成总票价计算后需要通过加密发回总票价并且需要将home.ts(打字稿文件)中的总票价解密并分配给this.finalFare = data..

我已经通过导入cryptocalculatePrice 函数内的index.js 中尝试了以下操作,

var salt = crypto.randomBytes(128).toString('base64');
var iterations = 10000;
var hash = pbkdf2(String(request.query.distance * fare), salt, iterations);

response.send(hash).

但它不起作用..

我希望用发送和接收安全数据(这就是我所需要的)来代替加密和解密(我在这个问题中使用过)这个词会更好..

请帮助我将数据从节点 js 安全地发送和接收到打字稿(用于计算的总价格)以及从打字稿到节点 js(用于距离)..

【问题讨论】:

  • pbkdf2 用于生成用于密码的慢速加盐哈希,无法恢复原始值。将数据传递到后端 - SSL 不能完成这项工作吗?
  • @gusto2,我是这个场景的新手,所以请帮助我以正确的方式安全地获取值..
  • 这个想法是你应该使用https 来传递数据,到目前为止,你没有理由在客户端加密任何通过简单地使用 https 无法实现的东西
  • @gusto2,你能详细说明一下吗..我认为它可以在客户端实现,因此没有给出理由..但我是初学者,所以我不确定如何实现它将加密值从打字稿发送到节点 js(用于距离),反之亦然(用于价格计算)..

标签: javascript node.js typescript firebase encryption


【解决方案1】:
var hash = pbkdf2(String(request.query.distance * fare), salt, iterations);

这是一个哈希,它是一个单向函数,通常用于存储和验证密码,而无法获得原始的纯值。

理论上 - 您可以在客户端(打字稿)上加密数据,例如使用 crypto-jsWindow.crypto。为此,您需要与服务器(nodejs)安全地共享加密密钥,这不是一件容易的事。 TLS (https) 将为您完成。

我还需要在打字稿中加密发送距离并获取加密值,并需要在节点js中解密..
请帮助我将数据从节点 js 安全地发送和接收到打字稿(用于计算总价)以及从打字稿到节点 js(用于距离)..

据我了解,您的目标是确保组件、客户端和服务器端操作之间的数据保密传输。

如前所述,使用 https 可确保通过加密通道发送数据。它是透明的——您只需发送/接收普通的普通值,但流量本身是安全加密的。只需确保通信的端点使用 https 协议(例如https://us-central1-sample-..)。

客户端也可以确定它与正确的服务器通信。仍然 - 您需要确保发送到服务器(nodejs)的数据来自正确的客户端。我相信对您来说最简单的选择是使用简单的用户身份验证。

长话短说 - 使用 https(发送/接收数据)将确保正确使用时通过加密通道发送值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2021-09-30
    • 1970-01-01
    • 2019-09-09
    • 2018-06-14
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多