当然,身为前端,大部分时间是不需要做这些处理的,但是有些特殊情况也会涉及到,起码知道简单的使用。
简单使用
//安装
npm i crypto-js
import CryptoJS from "crypto-js";
/**
* 加密解密方法
*/
const key = 'key123456' // 密钥
// 加密方法
export const Encrypt = (text) => {
return CryptoJS.AES.encrypt(text, key).toString();
}
// 解密方法
export const Decrypt = (text) => {
const bytes = CryptoJS.AES.decrypt(text, key);
return bytes.toString(CryptoJS.enc.Utf8);
}
//使用
Encrypt('哈哈') //加密
Decrypt(加密后的文本) //解密
较全面的加密(携带偏移量)
在vite项目中会出现解密数据为空的问题,其它项目正常
import CryptoJS from "crypto-js";
/**
* 加密解密方法
*/
const key = 'key12345678' // 密钥
const iv = '12345678' // 密钥偏移量
// 加密方法
export const Encrypt = (text) => {
var srcs = CryptoJS.enc.Utf8.parse(text)
var encrypted = CryptoJS.AES.encrypt(srcs, CryptoJS.enc.Utf8.parse(key), {
iv: CryptoJS.enc.Utf8.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
}
// 解密方法
export const Decrypt = (text) => {
const baseResult = CryptoJS.enc.Base64.parse(text) // Base64解密
const ciphertext = CryptoJS.enc.Base64.stringify(baseResult) // Base64解密
const decryptResult = CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), { // AES解密
iv: CryptoJS.enc.Utf8.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
const resData = decryptResult.toString(CryptoJS.enc.Utf8).toString()
return resData
}
简单的通过sha256和base64加密
// SHA256和base64结合的加密方法
export function sha256AndBase64(str) {
const crypto = require('crypto')
let hash = crypto.createHash('sha256')
hash.update(str)
return hash.digest('base64')
}