一、内置函数
内置函数:btoa
let value = 'hello';
console.log(btoa(value));
内置函数:atob
let value = 'aGVsbG8=';
console.log(atob(value));
二、借助第三方库实现,例如CryptoJS
const CryptoJS = require("crypto-js");
let value = "hello";
let trans = CryptoJS.enc.Utf8.parse(value);
let encrypted = CryptoJS.enc.Base64.stringify(trans);
console.log(encrypted)
//自己编写一套Base64编码和解码算法
function Base64(){
this.encode = function(val){
//编码逻辑
return val
}
this.decode = function(val){
//解码逻辑
return val
}
}
encrypt = new Base64();
console.log(encrypt.encode("encode"))
补充
解码,就是把base64字符串转换成常规字符串
b64DecodeUnicode = str => {
return decodeURIComponent(atob(str).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
};
console.log(
'base64解码:',
this.b64DecodeUnicode(
'YnJhbmNoPTM5MDAmc3Njb2RlPTMzNDQyJnNzbmFtZT3ltJTmtKrlvrcmdGVtcGxhdGU9MTE5MQ',
),
);
转码,就是把普通字符串加密成base64字符串
b64EncodeUnicode = str => {
return btoa(
encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode('0x' + p1);
}),
);
};
console.log('base64转码:', this.b64EncodeUnicode('哼哼哈师傅说个事'));
console.log('base64解码:', this.b64DecodeUnicode('5ZO85ZO85ZOI5biI5YKF6K+05Liq5LqL'));