基与Node.js的bcryptjs加密技术

学习目标:

    • 一、引言
    • 二、加密技术
      • 1、简介
      • 2、明文和密文
    • 三、bcryptjs
      • 1、简介
      • 2、目的
      • 3、使用
        • (1)安装
        • (2)导入
        • (3)加盐加密
        • (4)比较
      • 4、案例
        • (1)对指定的字符串进行加密
        • (2)定义一个字符串,比较是否与上述加密的hash值相同
    • 四、总结

一、引言

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

二、加密技术

1、简介

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

基与Node.js的bcryptjs加密技术_第1张图片

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);

参数说明

参数 类型 是否必须 描述
s String 要进行加密的字符串
salt Nubmer | String 要生成或使用的盐长度,默认为10
@returns String 生成的哈希加密字符串

(4)比较

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

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

参数说明

参数 类型 是否必须 描述
s String 要比较的字符串
hash String 要测试的hash加密字符串
@returns Boolean 如果匹配,返回true,否则返回false
@throws Error 如果参数是非法的

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中于各位大佬进行学习交流,祝愿您的成长!

你可能感兴趣的:(Node.js,加密解密,javascript,js)