基与Node.js的bcryptjs加密技术

一、引言

在日常生活中我们经常会遇到密码,比如不同软件的注册、找回密码、登录……等需要用到密码。你不会真的以为注册的密码是原封不动的写入了数据库吧?如果是这样,那你太天真了。在用户输入完密码以后,服务器要将密码明文转换为密文之后才写入数据库的。这里面学问可多着呢,让我们一起来看看吧。

二、加密技术

1、简介

加密技术 是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术的应用是多方面的,但最为广泛的还是在电子商务和VPN上的应用,深受广大用户的喜爱。

在这里插入图片描述

2、明文和密文

  • 明文 :是指没有加密的文字(或者字符串),一般人都能看懂的意思,属于密码学术语。

  • 密文:密文是加了密的的文字,明文是加密之前的文字。密文是对明文进行加密后的报文 。

三、bcryptjs

1、简介

bcryptjs 是Node.js中比较简洁好用的一款第三方加盐(salt)加密包,并且支持跨平台的特性,用于实现在Node环境下重要资源的加密。

由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。

2、目的

相信很多朋友看到上述的介绍都已经猜的八九不离十了。没错,使用bcryptjs的最终目的就是增强数据的安全性。

我们在软件开发过程中,对于如密码这样的信息,我们不能直接以明文的方式存储在数据库中。如果数据库被入侵,比如说SQL注入……等,那么用户的密码将以明文的形式泄露给入侵者,则势必会造成不可避免的损失。

所以,在开发时,对于类似密码这样的数据,我们必须要进行进一步的加密处理,这样即便数据泄露,被加密的密码也难以破解。

而 bcrypt 是一种不可逆的加密算法,它无法通过解密密文得到明文,所用对于隐私加密来说,使用bcryptjs包是再好不过了。

3、使用

(1)安装

在vscode中切换到终端命令框下,执行以下命令,来安装最新版本的bcryptjs:

npm install bcryptjs
(2)导入

在需要使用到的路由文件或者其他地方,通过require()函数导入,代码如下:

const bcrypt = require('bcryptjs');
(3)加盐加密

对密码等隐私数据进行加密或者加盐

let hash = bcrypt.hashSync(s:sting, salt?:string | number);

参数说明

参数类型是否必须描述
sString要进行加密的字符串
saltNubmer | String要生成或使用的盐长度,默认为10
@returnsString生成的哈希加密字符串
(4)比较

比较用户输入的密码是否和数据库中对应账号加盐加密的密码一致

let result = bcrypt.compareSync(s:string,hash:string);

参数说明

参数类型是否必须描述
sString要比较的字符串
hashString要测试的hash加密字符串
@returnsBoolean如果匹配,返回true,否则返回false
@throwsError如果参数是非法的

4、案例

(1)对指定的字符串进行加密
//导入bcryptjs模块
const bcrypt = require('bcryptjs');
// 要加密的字符串
let str = "qwer123456";
// 加盐加密
let hash = bcrypt.hashSync(str, 10);
console.log("加密结果:" + hash);
// 输出:
		//加密结果:$2a$10$73xATixugqoeQAtvVpwADeISlXXg0.b/12DQq4sAcJqE8.MchRAVu
(2)定义一个字符串,比较是否与上述加密的hash值相同
// 定义字符串
let pwd1 = "123456789";
// 比较 false
console.log(bcrypt.compareSync(pwd1, hash));
// 比较 true
console.log(bcrypt.compareSync(str, hash));

四、总结

以上就是 bcryptjs 的基本使用,其实很简单,虽然说用的地方不多,但是在公司做大项目的时候,比如登录、注册、忘记密码模块都将大量使用,希望大家能够掌握。

如果你对编程感兴趣,或者正打算学习编程,那么请加入CSDN,选择适合自己的编程语言,并在CSDN中于各位大佬进行学习交流,祝愿您的成长!

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值