代码中有详细注释,建议粘贴到IDE上运行查看。
主函数:用来测试
public class Demo1 {
public static void main(String[] args) throws Exception{
//使用Base64加密解密普通字符串
// 加密
String base64encodedString = Base64.getEncoder().encodeToString("百度搜索:程序员小哲".getBytes("utf-8"));
System.out.println("加密字符串 :" + base64encodedString);
// 解码
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
System.out.println("原本字符串: " + new String(base64decodedBytes, "utf-8"));
//使用Base64加密解密文件
//Base64Demo.encodeBase64File、Base64Demo.decoderBase64File为自己编写的
//通过Base64Demo.encodeBase64File将文件加密,转化为加密字符串
//参数为文件的地址
String encodeBase64File = Base64Demo.encodeBase64File("D:\\音乐\\1.wav");
//输出加密后的字符串
System.out.println(encodeBase64File);
//通过Base64Demo.decoderBase64File将文件解密,转化为原文件,保存到电脑指定位置
//参数为加密后的文件字符串
Base64Demo.decoderBase64File(encodeBase64File);
}
}
创建 Base64Demo 类,里面有两个静态方法:encodeBase64File、decoderBase64File
decoderBase64File方法中的生成不重复文件名详细解释点我查看
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Base64Demo {
/**
* 将文件转成base64 字符串
* @param path 文件路径
*/
public static String encodeBase64File(String path) {
try {
//将文件 转换为字符串
File file = new File(path);
FileInputStream inputFile = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
inputFile.read(buffer);
inputFile.close();
//返回加密后的字符串
return new BASE64Encoder().encode(buffer);
} catch (Exception e) {
e.printStackTrace();
}
return "ok";
}
/**
* 将base64字符解码保存文件
* @param base64Code 加密的base64
*/
public static String decoderBase64File(String base64Code) {
StringBuffer wavName = new StringBuffer("D:\\\\音乐\\\\");
try {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
wavName.append(formatter.format(currentTime));
int num = (int) (Math.random() * (10000 - 1000) + 1000);
wavName.append(num);
wavName.append(".wav");
byte[] buffer = new BASE64Decoder().decodeBuffer(base64Code);
FileOutputStream out = new FileOutputStream(wavName.toString());
out.write(buffer);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return wavName.toString();
}
}