使用Base64Utils
Spring框架提供了可以进行base64编码解码的工具包,我们可以直接导入使用
import org.springframework.util.Base64Utils;
base64编码并返回字符串
public static String encryStringBase64(String str){
return Base64Utils.encodeToString(str.getBytes(StandardCharsets.UTF_8));
}
base64解码并生成字符串
public static String decryStringBase64(String base64_str){
byte[] str = Base64Utils.decode(base64_str.getBytes(StandardCharsets.UTF_8));
return new String(str);
}
这里解码后会返回一个byte类型的数组,需要将它转换成字符串,需要使用new来创建字符串,而不可用直接使用toString()方法,如果使用了toString方法则会返回数组的内存地址字符串
Base64Utils源码解析
通过查看Base64Utils的源码可以发现Base64Utils也是通过java自带的Base64工具包来实现的
方法 | 作用 |
---|---|
encode(byte[] src) | 对给定的字节数组进行base64编码。 参数原始字节数组 返回编码后的字节数组 |
decode(byte[] src) | 对给定的字节数组进行base64解码。 参数编码的字节数组 返回原始字节数组 |
encodeUrlSafe(byte[] src) | 使用RFC 4648“URL和文件名安全字母表”对给定的字节数组进行base64编码。 参数: SRC -原始字节数组 返回: 编码后的字节数组 |
decodeUrlSafe(byte[] src) | base64解码给定的字节数组使用RFC 4648“URL和文件名安全字母表”。 参数: SRC -编码的字节数组 返回: 原始字节数组 |
encodeToString(byte[] src) | 将给定的字节数组进行base64编码为String。 参数: SRC -原始字节数组 返回: 编码后的字节数组作为UTF-8字符串 |
decodeFromString(String src) | 从给定的UTF-8字符串字节数组解码。 参数: src -编码的UTF-8字符串 返回: 原始字节数组 |
encodeToUrlSafeString(byte[] src) | 使用RFC 4648“URL和文件名安全字母表”将给定的字节数组编码为字符串。 参数: SRC -原始字节数组 返回: 编码后的字节数组作为UTF-8字符串 |
decodeFromUrlSafeString(String src) | 使用RFC 4648“URL和文件名安全字母表”从UTF-8字符串解码给定的字节数组。 参数: src -编码的UTF-8字符串 返回: 原始字节数组 |
源代码
/*
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.util;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* A simple utility class for Base64 encoding and decoding.
*
* <p>Adapts to Java 8's {@link java.util.Base64} in a convenience fashion.
*
* @author Juergen Hoeller
* @author Gary Russell
* @since 4.1
* @see java.util.Base64
*/
public abstract class Base64Utils {
private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
/**
* Base64-encode the given byte array.
* @param src the original byte array
* @return the encoded byte array
*/
public static byte[] encode(byte[] src) {
if (src.length == 0) {
return src;
}
return Base64.getEncoder().encode(src);
}
/**
* Base64-decode the given byte array.
* @param src the encoded byte array
* @return the original byte array
*/
public static byte[] decode(byte[] src) {
if (src.length == 0) {
return src;
}
return Base64.getDecoder().decode(src);
}
/**
* Base64-encode the given byte array using the RFC 4648
* "URL and Filename Safe Alphabet".
* @param src the original byte array
* @return the encoded byte array
* @since 4.2.4
*/
public static byte[] encodeUrlSafe(byte[] src) {
if (src.length == 0) {
return src;
}
return Base64.getUrlEncoder().encode(src);
}
/**
* Base64-decode the given byte array using the RFC 4648
* "URL and Filename Safe Alphabet".
* @param src the encoded byte array
* @return the original byte array
* @since 4.2.4
*/
public static byte[] decodeUrlSafe(byte[] src) {
if (src.length == 0) {
return src;
}
return Base64.getUrlDecoder().decode(src);
}
/**
* Base64-encode the given byte array to a String.
* @param src the original byte array
* @return the encoded byte array as a UTF-8 String
*/
public static String encodeToString(byte[] src) {
if (src.length == 0) {
return "";
}
return new String(encode(src), DEFAULT_CHARSET);
}
/**
* Base64-decode the given byte array from an UTF-8 String.
* @param src the encoded UTF-8 String
* @return the original byte array
*/
public static byte[] decodeFromString(String src) {
if (src.isEmpty()) {
return new byte[0];
}
return decode(src.getBytes(DEFAULT_CHARSET));
}
/**
* Base64-encode the given byte array to a String using the RFC 4648
* "URL and Filename Safe Alphabet".
* @param src the original byte array
* @return the encoded byte array as a UTF-8 String
*/
public static String encodeToUrlSafeString(byte[] src) {
return new String(encodeUrlSafe(src), DEFAULT_CHARSET);
}
/**
* Base64-decode the given byte array from an UTF-8 String using the RFC 4648
* "URL and Filename Safe Alphabet".
* @param src the encoded UTF-8 String
* @return the original byte array
*/
public static byte[] decodeFromUrlSafeString(String src) {
return decodeUrlSafe(src.getBytes(DEFAULT_CHARSET));
}
}