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编码器。

1、Basic编码器

是标准的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"));
}

2、URL编码

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);

3、MIME编码

MIME编码适用于MIME格式数据,编码后每行的输出不超过76个字符,结束符号为\r\n。所谓MIME格式就是文件的表达式形式,比如image/png、video/mp4等。

Base64.getMimeEncoder();
Base64.getMimeDecoder();



相关推荐

当然可以自己写redis的工具类,或者使用第三方开源jar包或代码,这里使用spring boot的集成类。 一、pom依赖 <dependency> <gro

一、原理 CGLIB原理:动态生成一个要代理类的子类,子类重写代理类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入模切逻辑。它比使用java反射的JDK动态代理

1、下载jdk,并安装 2、Eclipse里 window-&gt;Preferences-&gt;Java-&gt;Installed JRE 选择你

一、Spring的AOP Spring的AOP本质是一种动态代理,常用于权限控制、缓存、日志处理、事务控制等,实现中使用JDK动态代理(接口)和CGLAB动态代理(子类)。 二、AOP的常用术语 1、

密码学意义上的安全随机数,要求必须保证其不可预测性。 1、基本用法 byte[] values = n

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