如何从节点js发送加密的文本并在打字稿中解密?

时间:2019-02-06 10:15:38

标签: javascript node.js typescript firebase encryption

我正在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。.

我通过导入index.jscalculatePrice函数中的crypto中尝试了以下内容,

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(用于距离)来安全地发送和接收数据。

1 个答案:

答案 0 :(得分:0)

var hash = pbkdf2(String(request.query.distance * fare), salt, iterations);

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

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

  

我还需要在Typescript中发送带有加密的距离并获取加密的值,并需要在Node JS中进行解密。   请帮助我安全地从节点js到打字稿(用于计算的总价)以及从打字稿到节点js(用于距离)来安全地发送和接收数据。

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

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

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

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