Loading... ## 使用Base64Utils Spring框架提供了可以进行base64编码解码的工具包,我们可以直接导入使用 ```java import org.springframework.util.Base64Utils; ``` ### base64编码并返回字符串 ```java public static String encryStringBase64(String str){ return Base64Utils.encodeToString(str.getBytes(StandardCharsets.UTF_8)); } ``` ### base64解码并生成字符串 ```java 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字符串 返回: 原始字节数组 | ### 源代码 ```java /* * 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)); } } ``` © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏