之前贴了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");
}
}
分享到:
相关推荐
android用base64实现文件与string相互转换,绝对好用已测试通过。
提供一种Base64编码,并输出UTF-8格式的BASE64编码方式。本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D',...
易语言汇编base64编码源码,汇编base64编码,Base64Encode,Base64Decode
Base64转String字符串,支持将Base64转化为String字符串
需要一个二进制与BASE64相互转换的函数,从网上找...示例中提供二进制与16进制字符串转换函数ConvertHexStrToBin与ConvertBinToHexStr,二进制与BASE64编码转换函数Base64Encode与Base64Decode,在VC6下编译通过可用。
实现BASE64编码和解码程序, 在类中实现如下函数并运行测试正确。 BASE64编码算法请在网上查询。 public String encode(byte[] data) { } public byte[] decode(String b) { }
可以实现将文件转换为Base64编码。可以实现将文件转换为Base64编码。
易语言API实现BASE64编码源码,API实现BASE64编码,Base64Enc,CryptBinaryToString
可实现Base64数据与String类型数据互转,Base64转string时产生的是HEX格式,转成ascll码即可。
labview 图片缩放 base64编码base64解码
LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...
Hex十六进制/Base64编码转换器,可对字符串文本进行十六进制及Base64编码与反编码
pb10调用base64.dll,实现将图片转换成base64编码,将base64编码转换成图片 函数声明 function long GetFileEncode64(ref string filename, ref string encode64)library "base64" alias for "GetFileEncode64;...
pb10调用base64.dll,实现将图片转换成base64编码,将base64编码转换成图片 函数声明 function long GetFileEncode64(ref string filename, ref string encode64)library "base64" alias for "GetFileEncode64;...
base64编码与解码C语言实现(带注释说明原理) 其中包括:base64编码接口和base64解码接口
base64 编码转换工具 base64加密解密工具
public function blob base64decode (string strbuf, ref character lc_return[]) //2013.11.26 //修改了原网上的最后2位字符的bug //修改了原网上解码没有按照标准76字符增加换行符的bug /* 标注base64编码方式 ...
算法是查表方式实现,优点:性能好、缺点:码表有几KB的内存占用。跟精易模块的BASE64进行简单测试对比,没啥毛病... 1) 添加 BASE64解码2_ASM 支持未补码的BASE64编码(删除了对标准BASE64编码长度的检测,可能存在B
这个是从github上面看到的一段base64编码算法的c++实现。可以参考一下的
测试时通常会用到一些hexstring参数,而在传递时需要转换成Base64String。这个小程序,能够很好的将HexString和Base64String相互转换。