js中常见的数据加密与解密的方法

JavaScript028

js中常见的数据加密与解密的方法,第1张

加密在我们前端的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(密码学,太庞大了)。

常见的加密算法基本分为这几类,

RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)

非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

AES这个标准用来替代原先的DES

DES/AES我们合并在一起介绍其用法和特点

Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。

保存为后缀名是.js的就行啊。当然首先要显示文件的扩展名才行。

如何设置显示文件的扩展名:

资源管理器--工具--文件夹选项--查看--隐藏已知文件类型的扩展名(将这个选项勾选掉)然后确定即可。

如果是单向加密传输的话可以说,是一件极其简单的事情,

为什么要进行加密传输,是因为h5和后端产生交互的这个过程中呢,会很容易被劫持数据,故而需要在传输过程中保持数据不可见性,前端存储公钥加密,而后端存储私钥进行解密,一般情况来说,前端不会存储私钥也不能存储私钥,不符合安全规范,因为前端的js文件也是可以被扒出来的

如何进行处理呢,简单的单向加密

只需要用到插件jsencryppt,当然,需要前后端保持一致的插件

使用场景,用户填写自己的信息/手机号/地址等

前端本地新建文件publickey.js

存储加密公钥,存储秘钥需要后端根据插件jsencryppt私钥生成,需要后端给予

export const publickey='21dsa1d23sa1da56f1as1f3asf56w4q15f132wa1f321sax32dsa5wq6e1ff123dsg1d23h1g2j1ulki2l1u31k5h34k564k89iul7213k2g31j231jf32j1'

在需要使用的组件引入插件jsencryppt和publickey.js文件

import { publickey } from '@/utils/publickey.js'

import JsEncrypt from 'jsencryppt'

在定义加密方法

const getPassword = new JsEncrypt() // 提取出秘钥加密方式

getPassword.setPublicKey(publickey) // 将公钥注入进插件加密方法中

加密方法并不是以上,加密方法是encrypt,你定义好的getPassword中,会有encrypt

而使用则是放在数据中

this.getPassword.encrypt(phone)

this.getPassword.encrypt(address)

this.getPassword.encrypt(name)

数据可以打印出来给后端进行解密处理是否有误

无误后即可直接进行联调

这部分是比较简单的单向加密,如果还需要前端这边还解密展示如何实现呢,前端又不能存储私钥,该如何处理呢?

敬请下回~