我们使用bcrypt对密码和数据进行哈希运算,而这些密码和数据永远不需要解密.我们应该如何保护其他需要解密的用户信息?

例如,假设我们不希望用户的真实姓名是纯文本,以防有人访问数据库.这是一些敏感数据,但也需要不时调用并以纯文本显示.有没有简单的方法可以做到这一点?

推荐答案

您可以使用crypto模块:

var crypto = require('crypto');
var assert = require('assert');

var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL
var key = 'password';
var text = 'I love kittens';

var cipher = crypto.createCipher(algorithm, key);  
var encrypted = cipher.update(text, 'utf8', 'hex') + cipher.final('hex');
var decipher = crypto.createDecipher(algorithm, key);
var decrypted = decipher.update(encrypted, 'hex', 'utf8') + decipher.final('utf8');

assert.equal(decrypted, text);

Edit

现在不推荐使用createCiphercreateDecipher,而是使用createCipherivcreateDecipheriv

Node.js相关问答推荐

聚合发布/订阅消息

如何在Node.js 中设置图表js的背景色

Express无法发布

为什么这个verifyToken函数从未被调用过?

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

如何使用 Node.js 连接到 Cloud SQL?

动态设置元数据,无需重复请求 NextJS 13

eSignature API 的 NodeJS SDK 是否支持数据流?

在对象数组中的数组中嵌套 $lookup - Mongodb

为什么后端开发需要单独的服务器?

如何避免在 mongodb 聚合中查找重复结果?

来自 child_process.exec 的错误没有这样的设备或地址,管道有帮助.为什么?

我怎样才能让`git`失败而不是要求提供凭据

后端位于 Docker 容器中时的 SvelteKit SSR fetch()

为什么 req.params.id 返回 undefined未定义?

Node.js 服务器中没有缓存

无法获取 CSS 文件

TypeError:请求路径包含未转义的字符,我该如何解决这个问题

为什么 Node 控制台不显示功能代码?

我无法全局安装 nodemon,nodemon无法识别