【Nest教程】Nest项目用户密码加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Nest教程】Nest项目用户密码加密

其实,加密也比较简单,为什么单独分出来写一篇,因为下面我们需要讲项目集成JWT,篇幅较长,所以把这个功能单独拎出来。


1 编写加密工具函数

项目规范化,我们在项目src目录下新建utils文件夹,这里面放工具函数,新建cryptogram.ts 文件,内容如下:

import * as crypto from 'crypto';
/**
 * Make salt
 */
export function makeSalt(): string {
  return crypto.randomBytes(3).toString('base64');
}
/**
 * Encrypt password
 * @param password 密码
 * @param salt 密码验证
 */
export function encryptPassword(password: string, salt: string): string {
  if (!password || !salt) {
    return '';
  }
  const tempSalt = Buffer.from(salt, 'base64');
  return (
    // 10000 代表迭代次数 16代表长度
    crypto.pbkdf2Sync(password, tempSalt, 10000, 16, 'sha1').toString('base64')
  );
}

复制

文件内容比较简单,两个方法,一个是随机字符串,一个是加密


2 使用

在user.service.ts文件导入

// 引入加密函数
import { makeSalt, encryptPassword } from '../utils/cryptogram';

复制

使用,用在更新及添加方法中,

// 增加/更新
async save(parameter: any): Promise<boolean | string> {
  Logger.log(`请求参数:${JSON.stringify(parameter)}`);
  // 判断新增/更新
  const user = await this.UserRepository.findOne({
    where: {
      name: parameter.name,
    },
  });
  if (!parameter.id && user != undefined) {
    return '用户名重复';
  }
  const salt = makeSalt();
  const hashPwd = encryptPassword(parameter.password, salt);
  parameter.password = hashPwd;
  parameter.passwdSalt = salt;
  try {
    let a = await this.UserRepository.save(parameter);
    return true;
  } catch (error) {
    Logger.log(`请求失败:${JSON.stringify(error)}`);
    return false;
  }
}

复制

逻辑很简单,就是不管是添加还是修改,只要是用户传了密码,就把密码加密存进数据库


3 查看效果

image.png

相关文章
|
2月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
23天前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
41 5
|
25天前
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
30 2
|
2月前
|
数据安全/隐私保护
金盾金狮pbb爱问云点盾云加密视频录屏翻录提取教程
此软件专为录制加密网络课程视频设计,能轻松录制通常因加密而无法显示或录制的视频内容,并且录制过程隐蔽不被检测,输出文件为通用MP4格式。使用步骤简易:首先播放视频,然后打开软件并登录,即可开始录制。
|
2月前
|
安全 数据安全/隐私保护 Python
|
2月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
103 0
|
2月前
|
数据安全/隐私保护
ev4a/ev6/ev8/evs/evpalyer2加密视频去水印翻录录屏教程
遇到.ev4a/.ev6/.ev8/.evs格式视频无法正常播放,及录屏时出现黑屏问题?本教程教你轻松解决!首先确保你已获得播放授权简要流程:1) 使用指定播放器打开加密视频;2) 运行破解工具解除录屏限制;3) 使用推荐工具完成录屏。快速转换为MP4格式,让你的视频分享无忧!请注意合法合规使用。
|
4月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
34 0
|
4月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
62 0