Java实现Base64加密解密
程序员文章站
2024-02-05 20:39:34
...
前言:为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来,如下是base64编码表:
1.Base64的作用
Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输;由于一些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要进行转换;由于某些系统中只能使用ASCII字符,Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,Base64适合在http,mime协议下快速传输数据,如网络中图片以及表情的传输
Base64并非安全领域下的加密解密算法,base64只能算是一个编码算法,对数据内容进行编码来适合传输
2.Base64的原理
Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上形成8位一个字节的形式;如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’
举例如下:
三个字节的原始数据为: aaaabbbb ccccdddd eeeeffff
编码之后会变成数据为:00aaaabb 00bbcccc 00ddddee 00eeffff
3.Base64加密解密实现两种方式
算法实现方式:
- Jdk
- Commons Codec(需要jar包,案例包:commons-codec-1.10.jar)
Jdk的Base64加密解密
package com.example.base64;
import java.util.Base64;
public class Base {
public static void main(String[] args) {
String msg = "hello world";
jdkBase64(msg);
String msg1 = "你好,王帅帅";
commonsBase64(msg1);
}
/*Jdk加密解密*/
public static void jdkBase64(String msg){
/*加密*/
byte[] bytes = msg.getBytes();
String encoded = Base64.getEncoder().encodeToString(bytes);
System.out.println("加密:"+encoded );
/*解密*/
byte[] decoded = Base64.getDecoder().decode(encoded);
String decodeStr = new String(decoded);
System.out.println("解密:"+decodeStr);
}
/*commonsCodes的base64加密解密*/
public static void commonsBase64(String msg){
/*加密*/
byte[] encode = org.apache.commons.codec.binary.Base64.encodeBase64(msg.getBytes());
String encodeStr = new String(encode);
System.out.println("加密:"+encodeStr);
/*解密*/
byte[] decode = org.apache.commons.codec.binary.Base64.decodeBase64(encodeStr.getBytes());
String decodeStr = new String(decode);
System.out.println("解密:"+decodeStr);
}
}
附:commonsCodes的base64加密解密方式依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
结语:以上就是针对于Base64加密解密的方式,当然不限于以上两种,同时给博友提供一个在线直接转换工具https://base64.supfree.net/欢迎博友留言提问…