// 待加密的对象
const personInfo = {
name: '贾飞天',
age: 18,
address: '%10%'
};
/*
⭕window.btoa(): Base64加密
该方法使用 "A-Z", "a-z", "0-9", "+", "/" 和 "=" 字符来编码字符串。
⭕window.atob(): Base64解密
❗❗❗window.btoa()与window.atob()不支持中文
由于window.btoa()方法仅支持ASCII编码,
我们在转换中文的时候就需要先将中文转换为ASCII字符序列,
再通过btoa进行base64编码
⭕转换ASCII字符序列的方法我们可以使用encodeURIComponent和decodeURIComponent
*/
// utf-8转换base64字符串
const utf8_to_base64 = (str) => window.btoa(encodeURIComponent(str));
// base64转换utf-8字符串
const base64_to_utf8 = (str) => decodeURIComponent(window.atob(str));
// 加密
const encodeInfo = utf8_to_base64(JSON.stringify(personInfo));
console.log(encodeInfo); // JTdCJTIybmFtZSUyMiUzQSUyMiVFOCVCNCVCRSVFOSVBMyU5RSVFNSVBNCVBOSUyMiUyQyUyMmFnZSUyMiUzQTE4JTJDJTIyYWRkcmVzcyUyMiUzQSUyMiUyNTEwJTI1JTIyJTdE
// 解密
const decodeInfo = base64_to_utf8(encodeInfo);
console.log(decodeInfo); // {"name":"贾飞天","age":18,"address":"%10%"}
console.log(JSON.parse(decodeInfo)); // {name: '贾飞天', age: 18, address: '%10%'}
/*
⭕后端java使用
// 加密
String base64字符串 = Base64.getEncoder().encodeToString("待加密字符串".getBytes("utf-8"));
// 解密
String 普通字符串 = new String(Base64.getDecoder().decode("待解密base64字符串"), "utf-8");
// java对URL进行编码和解码
import java.net.URLEncoder;
import java.net.URLDecoder;
// 编码
URLEncoder.encode( URL, "UTF-8" )
// 解码
URLDecoder.decode( URL, "UTF-8" )
*/