Base64编码还原String的实现

本文介绍了一种将Base64编码还原为原始String的方法,并提供了一个Java实现示例。该过程涉及从Base64编码字符串中提取二进制信息,将其转换为字节数组,最终解码为原始文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前贴了String转成Base64编码的实现,这里是一个逆向的过程,Base64编码还原String。

代码有些地方可能还需要完善。

public class Base64Test {

private final static String CODE_STR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
private final static int ORGINAL_LEN = 8;
private final static int NEW_LEN = 6;

public static void main(String[] args) throws Exception{
String str = "uf6joUAjo6Qloa2hrSYqo6ijqKOpo6mhqqGqo6mhqqGq";
System.out.println(decodeBase64(str));
}

public static String decodeBase64(String encodeStr) throws Exception{
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < encodeStr.length(); i++){

char c = encodeStr.charAt(i); //把"1tC5sg=="字符串一个个分拆
int k = CODE_STR.indexOf(c); //分拆后的字符在CODE_STR中的位置,从0开始,如果是'=',返回-1
if(k != -1){ //如果该字符不是'='
String tmpStr = Integer.toBinaryString(k);
int n = 0;
while(tmpStr.length() + n < NEW_LEN){
n ++;
sb.append("0");
}
sb.append(tmpStr);
}
}

/**
* 8个字节分拆一次,得到总的字符数
* 余数是加密的时候补的,舍去
*/
int newByteLen = sb.length() / ORGINAL_LEN;

/**
* 二进制转成字节数组
*/
byte[] b = new byte[newByteLen];
for(int j = 0; j < newByteLen; j++){
b[j] = (byte)Integer.parseInt(sb.substring(j * ORGINAL_LEN, (j+1) * ORGINAL_LEN),2);
}

/**
* 字节数组还原成String
*/
return new String(b, "gb2312");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值