首页 > Java > java教程 > 正文

在Java里如何使用Base64完成编码解码_Java Base64工具类解析

P粉602998670
发布: 2025-12-13 18:26:02
原创
193人浏览过
Java 1.8+推荐使用java.util.Base64:标准编码用getEncoder()/getDecoder(),URL安全用getUrlEncoder()/getUrlDecoder(),MIME用getMimeEncoder()/getMimeDecoder();禁用sun.misc.BASE64Encoder,注意字符集与非法输入处理。

在java里如何使用base64完成编码解码_java base64工具类解析

Java里用Base64编码解码很简单,JDK 1.8+自带java.util.Base64类,无需额外依赖,安全可靠,推荐直接使用。

标准Base64编解码(推荐)

这是最常用场景,比如传输二进制数据(图片、token等)转成文本安全格式。

  • 编码:用Base64.getEncoder().encodeToString(byte[]),返回String
  • 解码:用Base64.getDecoder().decode(String),返回byte[]
  • 注意:输入字符串必须是合法Base64格式,否则抛IllegalArgumentException

示例:

String original = "Hello Java";
String encoded = Base64.getEncoder().encodeToString(original.getBytes(StandardCharsets.UTF_8)); // "SGVsbG8gSmF2YQ=="
byte[] decodedBytes = Base64.getDecoder().decode(encoded);
String decoded = new String(decodedBytes, StandardCharsets.UTF_8); // "Hello Java"

URL安全Base64(适合HTTP参数)

标准Base64含+/=,在URL或文件名中可能出问题。用getUrlEncoder()getUrlDecoder()替代。

立即学习Java免费学习笔记(深入)”;

美图云修
美图云修

商业级AI影像处理工具

美图云修 50
查看详情 美图云修
  • 编码结果用-代替+_代替/,不补=
  • 解码时自动兼容有无=尾缀,也支持-/_

适合JWT载荷、URL参数、Cookie值等场景。

MIME Base64(处理邮件/附件)

如果要生成符合RFC 2045的Base64(每76字符换行,含CRLF),用getMimeEncoder();解码用getMimeDecoder()

  • 编码结果带换行,适合老式邮件协议
  • 日常Web开发基本用不到,除非对接特定邮件系统

常见坑与建议

  • 别用过时的sun.misc.BASE64Encoder——非公开API,JDK 9+已移除,且无保障
  • 编码前明确字符集,如str.getBytes(UTF_8),避免平台默认编码差异
  • 解码失败多数因字符串被截断、含非法字符或混入空格——可先trim()再解码
  • Base64只是编码,不是加密!敏感数据仍需AES等真正加密手段

基本上就这些。JDK原生Base64够用、稳定、线程安全,直接拿去用就行。

以上就是在Java里如何使用Base64完成编码解码_Java Base64工具类解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号