一、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));

二、后端解密

一、方法 一

public ProdCompDuty update(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 = new String(bytes1);

field.setC_clus_content(c_clus_content);

byte[] bytes2 = Base64.getDecoder().decode(field.getC_clus_econtent());

String c_clus_econtent = new String(bytes2);

field.setC_clus_econtent(c_clus_econtent);

}

ProdCompDutyDao.updateOne_odb_duty_no(field);

return field;

}

二、方法 二

public ProdCompDuty update(ProdCompDutyDTO prodCompDutyDTO) {

ProdCompDuty field = prodCompDutyDTO.getField();

//Base64解密 责任中文内容和责任英文内容

if (StringUtil.isNotBlank(prodCompDutyDTO.getIsBase64()) && "true".equals(prodCompDutyDTO.getIsBase64())) {

try {

String c_clus_content = URLDecoder.decode(new String(Base64.getDecoder().decode(field.getC_clus_content()), "utf-8"), "utf-8");

String c_clus_econtent = URLDecoder.decode(new String(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 Buffer

var buffer;

if (typeof module !== 'undefined' && module.exports) {

try {

buffer = eval("require('buffer').Buffer");

} catch (err) {

buffer = undefined;

}

}

// constants

var b64chars

= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

var b64tab = 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 stuff

var cb_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;

var utob = function(u) {

return u.replace(re_utob, cb_utob);

};

var cb_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)));

}

var encode = function(u, urisafe) {

return !urisafe

? _encode(u)

: _encode(String(u)).replace(/[+\/]/g, function(m0) {

return m0 == '+' ? '-' : '_';

}).replace(/=/g, '');

};

var encodeURI = function(u) { return encode(u, true) };

// decoder stuff

var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;

var cb_btou = function(cccc) {

switch(cccc.length) {

case 4:

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));

case 3:

return fromCharCode(

((0x0f & cccc.charCodeAt(0)) << 12)

| ((0x3f & cccc.charCodeAt(1)) << 6)

| (0x3f & cccc.charCodeAt(2))

);

default:

return fromCharCode(

((0x1f & cccc.charCodeAt(0)) << 6)

| (0x3f & cccc.charCodeAt(1))

);

}

};

var btou = function(b) {

return b.replace(re_btou, cb_btou);

};

var cb_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);

};

var atob = 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 : new buffer(a, 'base64')).toString();

}

: function(a) { return btou(_atob(a)) };

var decode = function(a){

return _decode(

String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' })

.replace(/[^A-Za-z0-9\+\/]/g, '')

);

};

var noConflict = 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() available

if (typeof Object.defineProperty === 'function') {

var noEnum = function(v){

return {value:v,enumerable:false,writable:true,configurable:true};

};

global.Base64.extendString = function () {

Object.defineProperty(

String.prototype, 'fromBase64', noEnum(function () {

return decode(this)

}));

Object.defineProperty(

String.prototype, 'toBase64', noEnum(function (urisafe) {

return encode(this, urisafe)

}));

Object.defineProperty(

String.prototype, 'toBase64URI', noEnum(function () {

return encode(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;

}

else if (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)

import org.apache.commons.net.util.Base64;

import java.io.UnsupportedEncodingException;

@SuppressWarnings("restriction")

public class BaseEncodeAndDecode {

//加密

public static String getBase64(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;

}

// 解密

public static String getFromBase64(String s) {

byte[] b = null;

String result = null;

if (s != null) {

try {

b = Base64.decodeBase64(s);

result = new String(b, "utf-8");

} catch (Exception e) {

e.printStackTrace();

}

}

return result;

}

}

二、base64加密解密(util)

import java.util.Base64;

public class BaseEncodeAndDecode {

//加密

private static String BaseEncodeAndDecode(String str) {

//String encodedString = Base64.getEncoder().encodeToString(str.getBytes());

String encodedString = Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());

return encodedString;

}

//解密

private static String getFromBase64(String str) {

byte[] decodedBytes = Base64.getDecoder().decode(str);

String decodedString = new String(decodedBytes);

return decodedString;

}

}

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: