在做前端时对一些资料进行加密存储,读出时再解密。 找了些方法,JS本身倒也有些原生的方法,比如:escape(),unescape()和base64加密,不过它们是编码转换,起不到加密作用。后来就找到了crypto-js这个加密包,感觉才找到了正路。
https://www.npmjs.com/package/crypto-js
import sha256 from 'crypto-js/sha256';
import hmacSHA512 from 'crypto-js/hmac-sha512';
import Base64 from 'crypto-js/enc-base64';
const message, nonce, path, privateKey; // ...
const hashDigest = sha256(nonce + message);
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));
先看两眼,这些流行的加密函数都有了,功能也强大了,不错。那它在vue中是如何使用的呢?
cnpm install crypto-js --save
import CryptoJS from 'crypto-js'
//加密秘钥 必须为:8/16/32位
let aseKey = "cwc8vtpW"
//加密函数
function encypt(message){
return CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString()
}
//解密函数
function decrypt(code){
return CryptoJS.AES.decrypt(code, CryptoJS.enc.Utf8.parse(aseKey), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
}
这个AES加密算法还是不错,它是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。嗯,加密级别对于我的应用足够了。用前端试了下,速度还不错,效果可以。