包含算法种类:MD5算法/sha1算法、base64加密和解密、Hmac、AES、Diffie-Hellman
AES:常用的对称加密算法,加密解密都用一个秘钥,需要自己封装函数
MD5算法:常用的哈希算法,用于给任意数据一个"签名"
sha1算法:哈希加密,对强行攻击的强度更大,但是循环步骤比MD5多,处理的缓存大,所以相同硬件下,运行速度比MD5慢
Hmac:哈希算法,可以利用MD5和sha1等哈希算法,但是额外需要一个秘钥,可以理解为用随机数'增强’的哈希算法
Diffie-Hellman:一种密钥交换协议,在双方不泄露密钥的情况下协商出一个密钥
主要总结AES算法
-
引入到crypto.js
npm install crypto-js import CryptoJS from 'crypto-js/crypto-js'
-
加密
import CryptoJS from 'crypto-js' export const encrypt = (word,key) => { var key = CryptoJS.enc.Utf8.parse(key); var srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 // 后台用的是pad.Pkcs5,前台对应为Pkcs7 }); return encrypted.toString();
}
-
解密
export const decrypt = (word,key) => { var key = CryptoJS.enc.Utf8.parse(key); var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.Utf8.stringify(decrypt).toString(); }
例如
-
请求头使用加密,需与后台商量
import Crypto from './crypto'; headersConfig = { 'sign': escape(Crypto.encryptByDES("jU7dDd0+68" + new Date().getTime(), "k8!MZms@")), 'ver': '1.0.6', 'os': 'web', 'Content-Type': 'application/json' }
-
Tip
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。 unescape() 函数可对通过 escape() 编码的字符串进行解码。 JS内置全局函数