web 加密——CryptoJs
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 13 天,点击查看活动详情。
介绍
在前端,我们经常需要进行登录操作,但是我们进行登录操作的时候,如果明文进行传输,是非常不安全的一件事情,因此,为了提高安全性,我们需要对登录信息进行加密,这样,登录信息就变成了加密信息,当我们登录的时候,我们只需要将加密后的信息提价给后台,后台再进行解密,就可以得到原始的登录信息了。
加密方式——盐加密
盐加密是一种常用的加密方式,电话号码,邮箱等等都是使用盐加密来加密的。盐加密的原理是:在加密的时候,在加密的内容之前加上盐,盐是一个固定的内容,前后端统一的,前端用这个盐加密,后端使用这个盐解密。这样前后端就能保证获取到的数据是一致的。
加密库-CryptoJs
安装
使用 npm 安装 crypto-js
npm install --save
使用 CDN
<script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/aes.js"></script>
使用
-
MD5 加密 MD5 加密是一种广泛使用的散列函数。它常用于各种安全软件,也常用于检测文件的完成性。但是 MD5 不是抗冲突的,它不适合 SSL 证书或依赖此属性的数字签名等应用程序。
let hash = CryptoJS.MD5("Message"); -
SHA-1 加密 SHA 哈希函数是美国国家安全局(NSA)设计。SHA-1 是现有 SHA 哈希函数当中最成熟的,它用于各种安全应用程序和协议。不过随着新攻击的发现或改进,SHA-1 的防御能力一直在减弱
let hash = CryptoJS.SHA1("Message"); -
SHA-256 加密 SHA-256 是 SHA-2 的四个变体之一。它的安全性比 SHA-1 更好,但使用的广泛程度并没有 SHA-1 那么高。
let hash = CryptoJS.SHA256("Message");...还有很多加密方式,如果感兴趣可以访问crypto-js 官网
使用
//导入crypto-js import CryptoJS from "crypto-js"; //将当前时间戳加密返回 function cryptoJSEncryption(value) { //默认的 key,通过这个和传进来的value进行混合加密 //这个就是盐加密当中的盐 let defaultKey = CryptoJS.enc.Utf8.parse("SKDFHJSH454DSFJS"); let valueEncryption = CryptoJS.enc.Utf8.parse(value); //将默认的 key 和value进行混合加密,.ciphertext.toString()将密文转成字符串,toUpperCase()将密文转成大写 let ciphertext = CryptoJS.AES.encrypt(timeStamp, defaultKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }) .ciphertext.toString() .toUpperCase(); //将密文返回 return ciphertext; }