在前端開發(fā)中我們經(jīng)常會遇到對數(shù)據(jù) 加密 or 解密 的場景,著重介紹下常用的幾種加密方式文章來源地址http://www.zghlxwxcb.cn/news/detail-828195.html
一、sha1加密
const CryptoJS = require('crypto-js') // 引入AES
function sha1(params) {
return CryptoJS.SHA1(params).toString()
}
二、AES加解密
const CryptoJS = require('crypto-js') // 引入AES
/**
* @param data 明文/密文
* @param key 密鑰
* @param iv 偏移量
*/
// key: '1qa2ws3ed4rf5tg122s'
// iv: 'test1234567890IV'
// 加密
function aesEncrypt(data, key, iv) {
let _key = CryptoJS.enc.Utf8.parse(key)
let _iv = CryptoJS.enc.Utf8.parse(iv)
// 或 let _iv = CryptoJS.lib.WordArray.random(16)
let encrypted = CryptoJS.AES.encrypt(_data, _key, {
iv: _iv, // 偏移量(初始向量), CBC/CFB模式需加偏移量
mode: CryptoJS.mode.CBC, // CBC/CFB/ECB模式
padding: CryptoJS.pad.Pkcs7 // padding處理,Pkcs5/Pkcs7/NoPadding
})
return encrypted.toString()
}
// 解密
function aesDecrypt(data, key, iv) {
let _key = CryptoJS.enc.Utf8.parse(key);
let _iv = CryptoJS.enc.Utf8.parse(iv);
let decrypt = CryptoJS.AES.decrypt(data, _key , {
iv: _iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return decrypt.toString(CryptoJS.enc.Utf8)
}
【注】:加密時(shí)必須使用toString轉(zhuǎn)成字符串,解密時(shí)必須使用utf8格式
三、base64加密
// 加密
let encryptData = btoa('Hello World!');
console.log(encryptData); // "SGVsbG8gV29ybGQh"
// 解密
let decryptData = atob(encryptData)
console.log(decodedString); // "Hello World!"
四、MD5加密
const CryptoJS = require('crypto-js') // 引入AES
function md5(params) {
return CryptoJS.MD5(params).toString()
}
四、編碼/解碼字符串
// 編碼
escape(str)
encodeURI(str)
encodeURIComponent(str)
// 解碼
unescape(str)
decodeURI(str)
decodeURIComponent(str)
文章來源:http://www.zghlxwxcb.cn/news/detail-828195.html
到了這里,關(guān)于JS---淺談前端數(shù)據(jù)加密的不同方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!