场景描述
在开发程序中,我们无时无刻不在接受第三方的一些token,比如我们申请了地图软件的一些定位、导航功能,第三方会给予我们appid还有app secret作为访问他们服务的凭证,大部分时候我们会将求这些登陆凭证放在env文件中,不会直接Hard-Code,但是你是否觉得这样就安全了呢?
一般我们将数据放在env中,但是我们为了放置一些特别情况的出现,比如不小心这份env文件泄露出去了,这样别人就可以登陆到我们的账号,偷窃我们的服务,所以我们会使用第三方加密工具,以便保护我么不能的数据安全。更何况在很多时候,你的密钥之类无法放置在env文件中,此时你更需要对其进行加密。
使用CryptoJs
JavaScript library of crypto standards.
加密工具类有千千万,选用CryptoJs的最大原因是背靠谷歌,使用的人多。
目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、AES、RSA、Rabbit、MARC4、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2等。使用时可以引用总文件,也可以单独引用某一文件。
首先安装下面指令安装该工具类
npm install crypto-js
安装成功之后,我们可以直接在项目中使用了。
下面会做一个最简单的例子,简单的介绍加密以及解密。
简单的加解密
接下来的代码实例较为简单,所以就不做分步讲解了。
需要注意的是,我们需要准备一个加密的密钥。
以AES的加解密为例,我们先准备一个密钥,一般我会将密钥放在env文件里面,方便修改。
const SECRET_KEY = process.env.ENCRYPT_KEY;
当我们需要加密的时候,可以这么设置
const encryData=CryptoJS.AES.encrypt(
'WQXMdFKB7rEPFrDrrZJn',
SECRET_KEY)
.toString();
解密较为麻烦,需要注意的是我们要uft8的转化
const decryData= CryptoJS.AES.decrypt(
process.env.POSTGRES_PASSWORD,
SECRET_KEY)
.toString(CryptoJS.enc.Utf8),
添加链接描述
个人博客~求关注