base64编码 springboot_Base64工具类:将前端vue与后台SpringBoot传输的参数进行加密和解密...

这是一个Java实现的Base64工具类,适用于SpringBoot项目。类中包含加密和解密方法,方便前后端传输过程中的数据加密。通过编码和解码字节数据,该工具类能有效地处理字符串的加密与解密操作。
摘要由CSDN通过智能技术生成

packagecom.gb.util;importorg.apache.commons.lang3.StringUtils;/***@authorguob

* 加密工具类*/@SuppressWarnings({"unused"})public classBase64Util {private static char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();private static byte[] codes = new byte[256];static{for (int i = 0; i < 256; i++) {

codes[i]= -1;

}for (int i = 'A'; i <= 'Z'; i++) {

codes[i]= (byte) (i - 'A');

}for (int i = 'a'; i <= 'z'; i++) {

codes[i]= (byte) (26 + i - 'a');

}for (int i = '0'; i <= '9'; i++) {

codes[i]= (byte) (52 + i - '0');

}

codes['+'] = 62;

codes['/'] = 63;

}publicBase64Util() {

}/**加密*/

public staticString encode(String data) {if(StringUtils.isNotBlank(data)) {//返回加密后的字符串

return newString(encode(data.getBytes()));

}else{return "字符串为空,无法进行加密";

}

}/**解密*/

public staticString decode(String data) {if(StringUtils.isNotBlank(data)) {//返回解密后的字符串

return newString(decode(data.toCharArray()));

}else{return "字符串为空,无法进行解密";

}

}/**编码*/

public static char[] encode(byte[] data) {char[] out = new char[((data.length + 2) / 3) * 4];for (int i = 0, index = 0; i < data.length; i += 3, index += 4) {boolean quad = false;boolean trip = false;int val = (0xFF & (int) data[i]);

val<<= 8;if ((i + 1)

val|= (0xFF & (int) data[i + 1]);

trip= true;

}

val<<= 8;if ((i + 2)

val|= (0xFF & (int) data[i + 2]);

quad= true;

}

out[index+ 3] = alphabet[(quad ? (val & 0x3F) : 64)];

val>>= 6;

out[index+ 2] = alphabet[(trip ? (val & 0x3F) : 64)];

val>>= 6;

out[index+ 1] = alphabet[val & 0x3F];

val>>= 6;

out[index+ 0] = alphabet[val & 0x3F];

}returnout;

}/**解码*/

public static byte[] decode(char[] data) {int tempLen =data.length;for (int ix = 0; ix < data.length; ix++) {if ((data[ix] > 255) || codes[data[ix]] < 0) {--tempLen;

}

}int len = (tempLen / 4) * 3;if ((tempLen % 4) == 3) {

len+= 2;

}if ((tempLen % 4) == 2) {

len+= 1;

}byte[] out = new byte[len];int shift = 0;int accum = 0;int index = 0;for (int ix = 0; ix < data.length; ix++) {int value = (data[ix] > 255) ? -1: codes[data[ix]];if (value >= 0) {

accum<<= 6;

shift+= 6;

accum|=value;if (shift >= 8) {

shift-= 8;

out[index++] = (byte) ((accum >> shift) & 0xff);

}

}

}if (index !=out.length) {throw new Error("错误计算的数据长度(写入" + index + "而不是" + out.length + ")");

}returnout;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值