栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jdk1.8——Base64

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jdk1.8——Base64

jdk1.8新增了base64编解码功能;

提供了3种base64编码方式:

    Basic:base64.getEncoder()和base64.getDecoder()

编码输出组成:大小写字母、数字、+、/

如果编码后的二进制长度非3的倍数则会使用=补齐,所以编码后会有0-2个=在结尾,不需要补齐可以使用base64.getEncoder().withoutPadding();(下同)

    URL and Filename safe:base64.getUrlEncoder()和base64.getUrlDecoder()

编码输出组成:大小写字母、数字、-、_

编码后不包含“/”等特殊字符,不会对url或者文件名或者路径造成干扰;

    MIME:base64.getMimeEncoder()、base64.getMimeEncoder(lineLength, lineSeparator)和base64.getMimeDecoder()

编码输出组成跟Basic一样,不过限制了每行的长度和每行的分隔符,默认的每行不超过76个字符并且用rn作为换行符,也可以自定义行长度和行分隔符;

指定行长的时候会四舍五入到4的倍数长度(向下取到4的倍数的长度,如果长度<=0则不会分行);

指定的分隔符不能包含编码表里的字符(不能包含Basic里的:大小写字母、数字、+、/,但是可以包含-和_);

Encoder可以使用的编码方法:

Decoder可以使用的解码方法:

小Demo:

@Test
	public void test() {
		System.out.println("========1=======");
		Encoder baseEncoder = base64.getEncoder();
		Decoder baseDecoder = base64.getDecoder();
		String s1 = baseEncoder.encodeToString("12345678?abcd".getBytes());
		System.out.println(s1);
		byte[] bytes1 = baseDecoder.decode(s1);
		System.out.println(new String(bytes1));
		
		System.out.println("========2=======");
		Encoder urlEncoder = base64.getUrlEncoder();
		Decoder urlDecoder = base64.getUrlDecoder();
		String s2 = urlEncoder.encodeToString("12345678/abcde".getBytes());
		System.out.println(s2);
		byte[] bytes2 = urlDecoder.decode(s2);
		System.out.println(new String(bytes2));
		
		System.out.println("========3=======");
		Encoder mimeEncoder = base64.getMimeEncoder();
		Decoder mimeDecoder = base64.getMimeDecoder();
		String s3 = mimeEncoder.encodeToString("123abc测试123abc测试123abc测试123abc测试123abc测试123abc测试".getBytes());
		System.out.println(s3);
		byte[] bytes3 = mimeDecoder.decode(s3);
		System.out.println(new String(bytes3));
		
		System.out.println("========4=======");
		Encoder mimeEncoder4 = base64.getMimeEncoder(4, "~".getBytes());
		Encoder mimeEncoder5 = base64.getMimeEncoder(5, "~".getBytes());
		Encoder mimeEncoder6 = base64.getMimeEncoder(6, "~".getBytes());
		Encoder mimeEncoder7 = base64.getMimeEncoder(7, "~".getBytes());
		Encoder mimeEncoder8 = base64.getMimeEncoder(8, "_".getBytes());
		Encoder mimeEncoder9 = base64.getMimeEncoder(9, "_".getBytes());
		Encoder mimeEncoder10 = base64.getMimeEncoder(10, "_".getBytes());
		System.out.println(mimeEncoder4.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder5.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder6.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder7.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder8.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder9.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
		System.out.println(mimeEncoder10.encodeToString("aaaaaaaaaaaaaaaaaaaaaaa".getBytes()));
	}

输出:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号