java中使用base64
阅读数:92 评论数:0
跳转到新版页面分类
python/Java
正文
一、Base64
Base64是一种基于64(8Bit)个可打印字符来表示二进制数据的方法。
索引 |
对应字符 |
索引 |
对应字符 |
索引 |
对应字符 |
索引 |
对应字符 |
0 |
A |
17 |
R |
34 |
i |
51 |
z |
1 |
B |
18 |
S |
35 |
j |
52 |
0 |
2 |
C |
19 |
T |
36 |
k |
53 |
1 |
3 |
D |
20 |
U |
37 |
l |
54 |
2 |
4 |
E |
21 |
V |
38 |
m |
55 |
3 |
5 |
F |
22 |
W |
39 |
n |
56 |
4 |
6 |
G |
23 |
X |
40 |
o |
57 |
5 |
7 |
H |
24 |
Y |
41 |
p |
58 |
6 |
8 |
I |
25 |
Z |
42 |
q |
59 |
7 |
9 |
J |
26 |
a |
43 |
r |
60 |
8 |
10 |
K |
27 |
b |
44 |
s |
61 |
9 |
11 |
L |
28 |
c |
45 |
t |
62 |
+ |
12 |
M |
29 |
d |
46 |
u |
63 |
/ |
13 |
N |
30 |
e |
47 |
v |
||
14 |
O |
31 |
f |
48 |
w |
||
15 |
P |
32 |
g |
49 |
x |
||
16 |
Q |
33 |
h |
50 |
y |
二、jdk1.8以内的base64
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
BASE64Encoder encoder = new BASE64Encoder();
String base64Str = encoder.encode(data);
//BASE64Decoder decoder = new BASE64Decoder();
//byte[] bytes = decoder.decodeBuffer(text);
BASE64Decoder decoder=new BASE64Decoder();
password=new String(decoder.decodeBuffer(password),"UTF-8"
三、jdk1.8以后的base64
从jdk8开始,移除了BASE64Encoder和BASE64Decoder,改使用Base64.
https://docs.oracle.com/javase/8/docs/api/
Base64提供了一套用于获取编码器和解码的静态方法 ,其中大致分为三类:Basic编码器、URL和文件安全编码器、MIME编码器。
是标准的Base64编码。
public static void main(String[] args) throws UnsupportedEncodingException {
String string = "密";
System.out.println("old string: " + string);
String base64 = Base64.getEncoder().encodeToString(string.getBytes("UTF-8"));
System.out.println("base64 decode: " + base64);
byte[] bytes = Base64.getDecoder().decode(base64);
System.out.println("base64 encode: " + new String(bytes, "UTF-8"));
}
URL编码和Basic编码有些不同,主要是URL中反斜杠有特殊的含义,直接编码会不太安全,所以URL编码会使用下划线_来替代/。
String base64 = Base64.getUrlEncoder().encodeToString(string.getBytes("UTF-8"));
System.out.println("base64 decode: " + base64);
byte[] bytes = Base64.getUrlDecoder().decode(base64);
MIME编码适用于MIME格式数据,编码后每行的输出不超过76个字符,结束符号为\r\n。所谓MIME格式就是文件的表达式形式,比如image/png、video/mp4等。
Base64.getMimeEncoder();
Base64.getMimeDecoder();
相关推荐
一、原理
CGLIB原理:动态生成一个要代理类的子类,子类重写代理类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入模切逻辑。它比使用java反射的JDK动态代理
一、Spring的AOP
Spring的AOP本质是一种动态代理,常用于权限控制、缓存、日志处理、事务控制等,实现中使用JDK动态代理(接口)和CGLAB动态代理(子类)。
二、AOP的常用术语
1、
ByteArrayOutputStream
此类实现了一个输出流,其中的数据被写入一个byte数组。缓冲区会随着数据的不断写入而自动增长,可以使用toByteArray()和t
HttpServer是JAVA6以后内置的HTTP服务器,位于rt.jar的com.sun.net.httpserver包下。
一、涉及的主要类
1、HttpServer
表示一个服务器实例,需要绑定
一、HashMap
HashMap使用链表法避免哈希冲突(相同hash值),当链表长度大于TREEIFY_THRESHOLD(默认为8)时,将链表转换为红黑树。当小于等于UNTREEIFY_THRES
JDK 19
63
JDK 18
62
JDK 17
61
JDK 16
60
JDK 15
59
JDK 14
58
JDK 13
57
JDK 12
56
J