javascript - 如何从节点 js 发送加密文本并在打字稿中解密?
问题描述
我在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.js
内部函数中尝试了以下内容,calculatePrice
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(用于距离)..
解决方案
var hash = pbkdf2(String(request.query.distance * fare), salt, iterations);
这是一个哈希,它是一个单向函数,通常用于存储和验证密码而无法获得原始的纯值。
理论上 - 您可以在客户端(打字稿)上加密数据,例如使用crypto-js或Window.crypto。为此,您需要与服务器(nodejs)安全地共享加密密钥,这不是一件容易的事。TLS (https) 将为您完成。
我还需要在打字稿中加密发送距离并获取加密值,并需要在节点 js 中进行解密。
请帮助我将数据从节点 js 安全地发送和接收到打字稿(用于计算的总价)以及从打字稿到节点js(距离)..
据我了解,您的目标是确保组件、客户端和服务器端操作之间数据的机密传输。
如前所述,使用https可确保通过加密通道发送数据。它是透明的——您只需发送/接收普通的普通值,但流量本身是安全加密的。只需确保通信的端点使用 https 协议(例如https://us-central1-sample-..
)。
客户端也可以确保它与正确的服务器通信。仍然 - 您需要确保发送到服务器(nodejs)的数据来自正确的客户端。我相信对您来说最简单的选择是使用简单的用户身份验证。
长话短说 - 使用 https(发送/接收数据)将确保正确使用时通过加密通道发送值。
推荐阅读
- docker - Codebuild:拉取访问被拒绝
- java - Leetcode 1584. 如何改进我的 Kruskal&Union Find 算法以使其更快?
- node.js - eslint 忽略模式不起作用
- c# - WinUI 桌面应用程序在应用程序中心发布:提取您的应用程序时出现问题
- r - 如果按组的第一行满足R中的特定条件,如何在数据框中按组选择相关数据?
- javascript - 为什么同一个事件会识别不同的activeElements?
- php - 猫头鹰轮播在 WordPress 主题中不起作用。帮我解决这个问题
- python - 当我更改 EXE 名称时,无法运行 PyInstaller 生成的 EXE
- angular - Angular 应用程序中的 KeepAlive 是什么?
- c++ - 是否允许在 catch 子句中调用的 lambda 中调用 std::current_exception()?