`

Base64编码还原String的实现

阅读更多
之前贴了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是一种常见的编码方式,它可以把二进制数据转换成ASCII字符串形式,同时又能方便地进行解码还原。本篇文章将详细介绍如何在Android中使用Base64来实现文件与String之间的相互转换。 一、Base64编码原理 Base...

    HexString和Base64String的相互转换

    2. **Base64String转HexString**:这个过程首先对Base64字符串进行解码,还原成原始的二进制数据,然后再将这些二进制数据每字节拆分成两个十六进制字符,从而得到HexString。 在提供的`DataConvert.sln`和`...

    .NET 中实现 Base64 编码

    在.NET中,实现Base64编码通常使用System.Text.Encoding类的GetBytes()和GetString()方法配合Convert类的ToBase64String()和FromBase64String()方法。例如,要对一个字符串进行Base64编码,可以这样做: ```csharp ...

    BASE64编码方法

    在Delphi编程环境中,实现BASE64编码和解码通常涉及到使用内置的TIdEncoderMIME类或者第三方库。以下是对Delphi中BASE64编码和解码的基本步骤的详细解释: 1. **编码过程**: - 首先,原始二进制数据按3个字节一组...

    VC++6.0使用base64编解码转图片

    在本项目"VC++6.0使用base64编解码转图片"中,我们将探讨如何在Visual C++ 6.0环境下实现Base64编码和解码,并将其应用于图片处理。 首先,Base64编码的基本原理是将每3个8位字节(24位)的数据转换为4个6位字节...

    Base64编码规则

    在Java中,实现Base64编码通常使用`java.util.Base64`类,这个类在Java 8及更高版本中引入。以下是一个简单的Base64编码示例: ```java import java.util.Base64; public class Base64Example { public static ...

    前端图片压缩base64后台还原图片

    在上述代码中,`base64ToBytes`方法使用Java的Base64解码器将base64字符串解码为字节数组,`saveImage`方法将这些字节写入指定路径的文件,完成图片的还原。 四、前端代码示例 前端代码通常涉及用户上传图片、压缩...

    Base64编码和解码的应用(前后端程序)

    在后端,Base64解码则是将接收到的Base64编码字符串还原成原始二进制数据。 **Base64编码原理** Base64编码基于64个可打印的ASCII字符,这些字符包括大小写字母、数字以及"+"和"/",还有一个特殊字符"="用于填充。...

    base64 Base64编码 .NET C#

    ### .NET和C#中的Base64编码实现 #### 编码函数:`EncodingString` 此方法接受一个字符串`SourceString`和一个`System.Text.Encoding`对象`Ens`作为参数,并返回该字符串经过Base64编码后的结果。其中,`Ens`对象...

    二维码生成 图片Base64编码解码

    System.out.println("Base64编码: " + base64String); } } ``` 这段代码中,我们首先创建一个`QRCode`对象,添加数据,然后调用`make()`方法生成二维码,接着将其转换为图像并保存到本地,或者使用Base64编码。 ...

    Java实现的Base64编码程序

    在Java中实现Base64编码,我们可以使用内置的`java.util.Base64`类,这个类提供了方便的方法来进行Base64的编码和解码。 Base64编码的原理是将每3个字节(24位)的数据分为4组,每组6位。由于ASCII码是7位的,因此6...

    Base64编码和解码器

    例如,`Convert.ToBase64String()`用于编码,`Convert.FromBase64String()`用于解码。以下是这两个方法的基本使用: ```csharp // Base64编码 byte[] binaryData = File.ReadAllBytes("input_file.txt"); // 读取二...

    图片流转存Base64编码然后转图片 Spring 框下的

    本篇将详细讲解如何在Spring框架下,将图片流转存为Base64编码,并从Base64编码还原回图片。 首先,我们需要理解什么是图片流和Base64编码。图片流是指图片数据的一种序列化形式,它可以是字节流或字符流,通常用于...

    IOS图片BASE64编码解码

    在iOS中,我们可以使用`NSData`类的`base64EncodedStringWithOptions:`方法来实现图片的BASE64编码。首先,我们需要将图片数据转换为`NSData`对象,然后调用这个方法进行编码。以下是一个简单的示例: ```swift ...

    IOS-图片编码-Base64-例子

    2. **解码数据**: 使用`UIImage`的初始化方法将Base64编码的`NSData`还原为图片。 ```swift guard let decodedImage = UIImage(data: data) else { return } ``` 3. **显示图片**: 将解码后的图片设置到...

    将文件进行zip压缩并base64加密和解密

    在Java中,`java.util.Base64`类提供了便捷的接口来实现BASE64编码和解码。以下是如何使用BASE64对文件进行加密和解密的示例: ```java import java.nio.file.Files; import java.nio.file.Paths; import java.util...

    javascript处理中文base64编码

    分析这个文件可以帮助我们更深入地理解在JavaScript中如何处理中文Base64编码的具体实现。 总结来说,处理JavaScript中的中文Base64编码,关键在于正确地转换中文字符串到UTF-8字节数组,再进行Base64编码和解码。...

    Base64编码和解码java版本

    在Java中,Base64编码和解码的功能主要通过`java.util.Base64`这个类来实现,该类在Java 8及以上版本中引入。下面将详细介绍如何使用这个类进行Base64的编码和解码操作。 首先,我们来看Base64编码的过程。编码的...

    c++图片与base64互转

    - 编码完成后,将Base64字符串存储到一个`std::string`对象中。 2. **从Base64到图片**: - 解码Base64字符串得到原始的二进制数据,同样可以使用第三方库或自定义函数完成。 - 将解码后的二进制数据转换回`cv::...

    C# 文件转换base64

    首先,使用`Convert.FromBase64String()`方法将Base64字符串还原为字节数组,然后将这些字节写入新的文件。在实际应用中,可能还需要处理Base64字符串末尾的填充字符('=')。 在开发过程中,你可能会遇到一些常见...

Global site tag (gtag.js) - Google Analytics