Java实现Base64加密解密算法攻略
什么是Base64?
Base64是一种将二进制数据编码成ASCII字符的方法,常用于在URL、Cookie、网页中传输少量二进制数据。它是由64个字符组成的字符集,其编码方式是将3个8位数的字符转换为4个6位数的字符,然后在6位数的前面补两个0的方法,即共有64个不同的编码字符,形如:
A - Z, a - z, 0 - 9, +, /
Base64的特点
- 原始数据长度不是3的倍数的话,最后会补足1或2个0
- 编码后数据长度是原始数据长度的4/3
- 解码的时候,将有4个字符的串看成一个整体,在将这个整体解析成3个字节的一组,在转换成8位二进制数
Java实现Base64加密解密算法
Java中有一个Base64类,位于java.util包中,实现了Base64编码和解码技术。我们可以使用这个类来完成Base64加密和解密。
Base64类提供了以下方法:
- encode(byte[] data):将字节数组进行64位编码,返回编码后的字符串
- encodeToString(byte[] data):将字节数组进行64位编码,并返回一个Base64编码后的字符串
- decode(String str):将Base64编码过的字符串解码成字节数组
- decode(byte[] data):将字节数组解码成一个字符串
示例1:使用Base64类完成字符串的加密和解密
import java.util.Base64;
public class Base64Utils {
public static String encode(String str) {
return Base64.getEncoder().encodeToString(str.getBytes());
}
public static String decode(String str) {
return new String(Base64.getDecoder().decode(str));
}
public static void main(String[] args) {
String str = "Base64加密解密算法示例";
String encodedStr = encode(str);
String decodedStr = decode(encodedStr);
System.out.println("原始字符串:" + str);
System.out.println("加密后字符串:" + encodedStr);
System.out.println("解密后字符串:" + decodedStr);
}
}
输出结果:
原始字符串:Base64加密解密算法示例
加密后字符串:QmFzZTY0JUU0JUJEbyVFNCVCNyU5OCVFNCVCQiU5NyVFNCVCMSU5NyVFNCVCNyU5NSVFNCVCQiU4MCVFNCVCNCU5NyVFNCVCOCU5MyVFNCVCMyU5MSVFNCVCMyU4NSVFNCVCMyU4OSVFNCVCNyU4OCVFNCVCNyU5MSU5MCVFNCVCNCU5QyVFNCVCMyU4RiVFNCVCOCVFNCVCNCU5NCVFNCVCNCU5MSVFNCVCNyU4NiVFNCVCNyU5Mg==
解密后字符串:Base64加密解密算法示例
示例2:使用Base64类完成图片的加密和解密
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
public class Base64ImageUtils {
public static void encode(String imagePath) throws Exception {
byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));
String encodedImage = Base64.getEncoder().encodeToString(imageBytes);
System.out.println("图片Base64编码:" + encodedImage);
}
public static void decode(String imagePath, String encodedImage) throws Exception {
byte[] decodedImage = Base64.getDecoder().decode(encodedImage);
Files.write(Paths.get(imagePath), decodedImage);
}
public static void main(String[] args) throws Exception {
String imagePath = "/Users/user/Desktop/sample.png";
encode(imagePath);
String encodedImage = "iVBORw0KGg...";
decode(imagePath, encodedImage);
System.out.println("图片解密成功");
}
}
输出结果:
图片Base64编码:iVBORw0KGg...
图片解密成功
总结
Java中的Base64类使实现Base64加密和解密变得简单。该类的方法提供了对应的功能,通过调用相应方法即可完成加密和解密。Base64的编码和解码应用广泛,可以用于数据传输,在安卓中加载图片,还可以实现身份验证等功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现Base64加密解密算法 - Python技术站