前后台Base64加密解密

// 待加密的对象
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" )
    
*/ 
    

 

posted on 2022-12-19 17:39  尹镇镇  阅读(470)  评论(0编辑  收藏  举报