crypto-js, 一种简洁的加解密方案 / 网络研习社#68

in hive-180932 •  4 years ago 

code.jpg

在做前端时对一些资料进行加密存储,读出时再解密。 找了些方法,JS本身倒也有些原生的方法,比如:escape(),unescape()和base64加密,不过它们是编码转换,起不到加密作用。后来就找到了crypto-js这个加密包,感觉才找到了正路。

crypto.jpg

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加密法,是美国联邦政府采用的一种区块加密标准。嗯,加密级别对于我的应用足够了。用前端试了下,速度还不错,效果可以。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!