我们使用bcrypt对密码和数据进行哈希运算,而这些密码和数据永远不需要解密.我们应该如何保护其他需要解密的用户信息?
例如,假设我们不希望用户的真实姓名是纯文本,以防有人访问数据库.这是一些敏感数据,但也需要不时调用并以纯文本显示.有没有简单的方法可以做到这一点?
我们使用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
现在不推荐使用createCipher和createDecipher,而是使用createCipheriv和createDecipheriv