持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
每日英语:
All human wisdom is summed up in two words: wait and hope.
翻译:人类所有的智慧归结为两个词:等待和希望。 ——大仲马
Base64
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本,但Base62x的性能效率偏低,目前还不建议在项目中使用。
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
我们在mall-common中创建com.xz.mall.util.Base64Util,在该类中演示Base64操作,代码如下:
public class Base64Util {
/***
* 普通解密操作
* @param encodedText
* @return
*/
public static byte[] decode(String encodedText){
final Base64.Decoder decoder = Base64.getDecoder();
return decoder.decode(encodedText);
}
/***
* 普通加密操作
* @param data
* @return
*/
public static String encode(byte[] data){
final Base64.Encoder encoder = Base64.getEncoder();
return encoder.encodeToString(data);
}
/***
* 解密操作
* @param encodedText
* @return
*/
public static byte[] decodeURL(String encodedText){
final Base64.Decoder decoder = Base64.getUrlDecoder();
return decoder.decode(encodedText);
}
/***
* 加密操作
* @param data
* @return
*/
public static String encodeURL(byte[] data){
final Base64.Encoder encoder = Base64.getUrlEncoder();
return encoder.encodeToString(data);
}
}
总结
本篇就简简单单介绍了一下Base64加密解密方法,有需要的大家可以收藏一下,在实际开发中,Base64这个加密解密的工具类还是用的挺多的。