我的文章
保护存储数据
对称加密算法(Symmetric Encryption)是一种使用同一密钥进行加密和解密文本的算法,这也意味着通信双方要使用同一密钥进行加解密。对称加密算法对于大型数据的加密来说速度很快,因此它也主要用于存储数据的加密。比较常用的对称加密算法有AES、Blowfish、DES和RC4等。
crypto模块中主要利用以下方法来实现对称加密:
createCipheriv: 提供对称加密, 该方法接收三个参数,第一个是加密算法、第二个是密钥,而第三个是初始向量(initialization vector)
update 和 final: 先更新数据,然后获得密文
const crypto = require(‘crypto’);
const algorithm = ‘aes-256-cbc’;
const password = ‘Hello world’;
const salt = crypto.randomBytes(32);
cnst key = crypto.scryptSync(password, salt, 32);
const iv = crypto.randomBytes(16);
const cipher = crypto.crateCipheriv(algorithm, key, iv);
let ssn = ‘111-000-2342’;
let encrypted = cipher.update(ssn, ‘utf8’, ‘hex’);
// 获得加密密文
encrypted += cipher.final(‘hex’);
// 解密算法是反向操作
const decipher = crypto.createDecipheriv(algorithm, key, iv);
let decrypted = decipher.final(‘utf8’);
console.log(decrypted)
同时用于对称加密的密钥也需要有合适的密码管理策略进行处理,否则一旦密钥被破解,数据的安全性就无从保障。通常我们会使用一个密钥管理系统(KMS)进行管理密钥。所有的加密密钥都由该系统进行统一分配和管理,而用于数据加密的密钥由一个主密钥(master
key)进行加密。比较流行的KMS有https://cloud.google.com/kms/ 和 https://aws.amazon.com/kms/,当然你可以选择自己实现。
作者:scq000
链接:https://www.imooc.com/article/300010
来源:慕课网
本文首次发布于慕课网 ,转载请注明出处,谢谢合作