0


Base64加密解密

一、Base64加密解密

一、前端加密

一、方法 一

const that =this;const copyruleForm =JSON.parse(JSON.stringify(that.ruleForm));const c_clus_content = window.btoa(unescape(encodeURIComponent(this.ruleForm.c_clus_content)));const c_clus_econtent = window.btoa(unescape(encodeURIComponent(this.ruleForm.c_clus_econtent)))注:unescape()方法已经被弃用,不建议使用

二、方法 二

注:深拷贝处理

const that =this;
# 深拷贝
const copyruleForm =JSON.parse(JSON.stringify(that.ruleForm));const c_clus_content =btoa(encodeURI(that.ruleForm.c_clus_content));const c_clus_econtent =btoa(encodeURI(that.ruleForm.c_clus_econtent));

二、后端解密

一、方法 一

publicProdCompDutyupdate(ProdCompDutyDTO prodCompDutyDTO){ProdCompDuty field = prodCompDutyDTO.getField();//Base64解密 责任中文内容和责任英文内容if(StringUtil.isNotBlank(prodCompDutyDTO.getIsBase64())&&"true".equals(prodCompDutyDTO.getIsBase64())){byte[] bytes1 =Base64.getDecoder().decode(field.getC_clus_content());String c_clus_content =newString(bytes1);
            field.setC_clus_content(c_clus_content);byte[] bytes2 =Base64.getDecoder().decode(field.getC_clus_econtent());String c_clus_econtent =newString(bytes2);
            field.setC_clus_econtent(c_clus_econtent);}ProdCompDutyDao.updateOne_odb_duty_no(field);return field;}

二、方法 二

publicProdCompDutyupdate(ProdCompDutyDTO prodCompDutyDTO){ProdCompDuty field = prodCompDutyDTO.getField();//Base64解密 责任中文内容和责任英文内容if(StringUtil.isNotBlank(prodCompDutyDTO.getIsBase64())&&"true".equals(prodCompDutyDTO.getIsBase64())){try{String c_clus_content =URLDecoder.decode(newString(Base64.getDecoder().decode(field.getC_clus_content()),"utf-8"),"utf-8");String c_clus_econtent =URLDecoder.decode(newString(Base64.getDecoder().decode(field.getC_clus_econtent()),"utf-8"),"utf-8");
                field.setC_clus_content(c_clus_content);
                field.setC_clus_econtent(c_clus_econtent);}catch(UnsupportedEncodingException e){
                e.printStackTrace();}}ProdCompDutyDao.updateOne_odb_duty_no(field);return field;}

三、前端加密解密

一、window浏览器环境

1、window.btoa() 将ascii字符串或二进制数据转换成 base64 编码过的字符串

2、window.atob() 函数用来解码被 base64 编码过的数据

# 方法名就是 btoa和 atob ,具体语法如下:
window.btoa('hellow World')// 编码   aGVsbG93IFdvcmxk
window.atob('aGVsbG93IFdvcmxk')// 解码 hellow World

注意:不适用于带中文解密,即window.btoa 与 window.atob 不支持中文,且 IE9 以下不支持atob、btoa

解决:btoa 不支持 Unicode 字符编码的问题编码时,先用 encodeURIComponent 对字符串进行编码,再进行 btoa 进行 Base64 编码解码时,先用 atob 对 Base64 编码的串进行解码,再用 decodeURIComponent 对字符串进行解码

var str ="hello,中国";var encoded_str =btoa(encodeURIComponent(str));var decoded_str =decodeURIComponent(atob(encoded_str));

console.log(encoded_str);// aGVsbG8lMkMlRTQlQjglQUQlRTUlOUIlQkQ=
console.log(decoded_str);// hello,中国在这里插入代码片

二、封装base64

/*
 *  base64.js
 */;(function(global, factory){typeof exports ==='object'&&typeof module !=='undefined'? module.exports =factory(global):typeof define ==='function'&& define.amd
        ?define(factory):factory(global)}((typeof self !=='undefined'? self
        :typeof window !=='undefined'? window
        :typeof global !=='undefined'? global
:this),function(global){'use strict';// existing version for noConflict()
    global = global ||{};var _Base64 = global.Base64;var version ="2.5.2";// if node.js and NOT React Native, we use Buffervar buffer;if(typeof module !=='undefined'&& module.exports){try{
            buffer =eval("require('buffer').Buffer");}catch(err){
            buffer =undefined;}}// constantsvar b64chars
        ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';varb64tab=function(bin){var t ={};for(var i =0, l = bin.length; i < l; i++) t[bin.charAt(i)]= i;return t;}(b64chars);var fromCharCode = String.fromCharCode;// encoder stuffvarcb_utob=function(c){if(c.length <2){var cc = c.charCodeAt(0);return cc <0x80? c
                : cc <0x800?(fromCharCode(0xc0|(cc >>>6))+fromCharCode(0x80|(cc &0x3f))):(fromCharCode(0xe0|((cc >>>12)&0x0f))+fromCharCode(0x80|((cc >>>6)&0x3f))+fromCharCode(0x80|( cc         &0x3f)));}else{var cc =0x10000+(c.charCodeAt(0)-0xD800)*0x400+(c.charCodeAt(1)-0xDC00);return(fromCharCode(0xf0|((cc >>>18)&0x07))+fromCharCode(0x80|((cc >>>12)&0x3f))+fromCharCode(0x80|((cc >>>6)&0x3f))+fromCharCode(0x80|( cc         &0x3f)));}};var re_utob =/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;varutob=function(u){return u.replace(re_utob, cb_utob);};varcb_encode=function(ccc){var padlen =[0,2,1][ccc.length %3],
        ord = ccc.charCodeAt(0)<<16|((ccc.length >1? ccc.charCodeAt(1):0)<<8)|((ccc.length >2? ccc.charCodeAt(2):0)),
        chars =[
            b64chars.charAt( ord >>>18),
            b64chars.charAt((ord >>>12)&63),
            padlen >=2?'=': b64chars.charAt((ord >>>6)&63),
            padlen >=1?'=': b64chars.charAt(ord &63)];return chars.join('');};var btoa = global.btoa ?function(b){return global.btoa(b);}:function(b){return b.replace(/[\s\S]{1,3}/g, cb_encode);};var_encode=function(u){var isUint8Array =Object.prototype.toString.call(u)==='[object Uint8Array]';return isUint8Array ? u.toString('base64'):btoa(utob(String(u)));}varencode=function(u, urisafe){return!urisafe
            ?_encode(u):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0 =='+'?'-':'_';}).replace(/=/g,'');};varencodeURI=function(u){returnencode(u,true)};// decoder stuffvar re_btou =/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;varcb_btou=function(cccc){switch(cccc.length){case4:var cp =((0x07& cccc.charCodeAt(0))<<18)|((0x3f& cccc.charCodeAt(1))<<12)|((0x3f& cccc.charCodeAt(2))<<6)|(0x3f& cccc.charCodeAt(3)),
            offset = cp -0x10000;return(fromCharCode((offset  >>>10)+0xD800)+fromCharCode((offset &0x3FF)+0xDC00));case3:returnfromCharCode(((0x0f& cccc.charCodeAt(0))<<12)|((0x3f& cccc.charCodeAt(1))<<6)|(0x3f& cccc.charCodeAt(2)));default:returnfromCharCode(((0x1f& cccc.charCodeAt(0))<<6)|(0x3f& cccc.charCodeAt(1)));}};varbtou=function(b){return b.replace(re_btou, cb_btou);};varcb_decode=function(cccc){var len = cccc.length,
        padlen = len %4,
        n =(len >0? b64tab[cccc.charAt(0)]<<18:0)|(len >1? b64tab[cccc.charAt(1)]<<12:0)|(len >2? b64tab[cccc.charAt(2)]<<6:0)|(len >3? b64tab[cccc.charAt(3)]:0),
        chars =[fromCharCode( n >>>16),fromCharCode((n >>>8)&0xff),fromCharCode( n         &0xff)];
        chars.length -=[0,0,2,1][padlen];return chars.join('');};var _atob = global.atob ?function(a){return global.atob(a);}:function(a){return a.replace(/\S{1,4}/g, cb_decode);};varatob=function(a){return_atob(String(a).replace(/[^A-Za-z0-9\+\/]/g,''));};var _decode = buffer ?
        buffer.from && Uint8Array && buffer.from !== Uint8Array.from
        ?function(a){return(a.constructor === buffer.constructor
                    ? a : buffer.from(a,'base64')).toString();}:function(a){return(a.constructor === buffer.constructor
                    ? a :newbuffer(a,'base64')).toString();}:function(a){returnbtou(_atob(a))};vardecode=function(a){return_decode(String(a).replace(/[-_]/g,function(m0){return m0 =='-'?'+':'/'}).replace(/[^A-Za-z0-9\+\/]/g,''));};varnoConflict=function(){var Base64 = global.Base64;
        global.Base64 = _Base64;return Base64;};// export Base64
    global.Base64 ={VERSION: version,atob: atob,btoa: btoa,fromBase64: decode,toBase64: encode,utob: utob,encode: encode,encodeURI: encodeURI,btou: btou,decode: decode,noConflict: noConflict,__buffer__: buffer
    };// if ES5 is available, make Base64.extendString() availableif(typeof Object.defineProperty ==='function'){varnoEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true};};
        global.Base64.extendString=function(){
            Object.defineProperty(String.prototype,'fromBase64',noEnum(function(){returndecode(this)}));
            Object.defineProperty(String.prototype,'toBase64',noEnum(function(urisafe){returnencode(this, urisafe)}));
            Object.defineProperty(String.prototype,'toBase64URI',noEnum(function(){returnencode(this,true)}));};}//// export Base64 to the namespace//if(global['Meteor']){// Meteor.js
        Base64 = global.Base64;}// module.exports and AMD are mutually exclusive.// module.exports has precedence.if(typeof module !=='undefined'&& module.exports){
        module.exports.Base64 = global.Base64;}elseif(typeof define ==='function'&& define.amd){// AMD. Register as an anonymous module.define([],function(){return global.Base64 });}// that's it!return{Base64: global.Base64}}));

方法使用

1、引用
import{Base64}from'./utils/base64'2、使用
Base64.encode('hellow world');// 编码  aGVsbG93IFdvcmxk
Base64.decode('aGVsbG93IFdvcmxk');// 解码  hellow World

三、开源的base64.js

1、下载依赖
$ npm install --save js-base64

2、使用方法:
import{Base64}from'js-base64'

Base64.encode('hellow world');// 编码  aGVsbG93IFdvcmxk
Base64.decode('aGVsbG93IFdvcmxk');// 解码  hellow World

四、后端Base64工具类

一、base64加密解密(apache)

importorg.apache.commons.net.util.Base64;importjava.io.UnsupportedEncodingException;@SuppressWarnings("restriction")publicclassBaseEncodeAndDecode{//加密  publicstaticStringgetBase64(String str){byte[] b=null;String s=null;try{  
            b = str.getBytes("utf-8");}catch(UnsupportedEncodingException e){  
            e.printStackTrace();}if(b!=null){  
            s=Base64.encodeBase64String(b);}return s;}// 解密    publicstaticStringgetFromBase64(String s){byte[] b =null;String result =null;if(s !=null){try{
                b =Base64.decodeBase64(s);
                result =newString(b,"utf-8");}catch(Exception e){    
                e.printStackTrace();}}return result;}}

二、base64加密解密(util)

importjava.util.Base64;publicclassBaseEncodeAndDecode{//加密privatestaticStringBaseEncodeAndDecode(String str){//String encodedString = Base64.getEncoder().encodeToString(str.getBytes());String encodedString =Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());return encodedString;}//解密privatestaticStringgetFromBase64(String str){byte[] decodedBytes =Base64.getDecoder().decode(str);String decodedString =newString(decodedBytes);return decodedString;}}
标签: javascript 前端 html

本文转载自: https://blog.csdn.net/weixin_45207323/article/details/129836690
版权归原作者 Jin-进 所有, 如有侵权,请联系我们删除。

“Base64加密解密”的评论:

还没有评论