Java Base64加密与解密示例代码
2023-03-07 09:02:25 时间
基本的加密尽量保持简单,加密输入字符串没有增加任何换行符。输出被映射到“A-Za-z0-9+/”字符集中,解密从该字符集中解析为任意字符,这篇文章主要介绍了Java Base64 加密与解密,需要的朋友可以参考下!
一、Java 8 基本 Base64
基本的加密尽量保持简单,加密输入字符串没有增加任何换行符。输出被映射到“A-Za-z0-9+/”字符集中,解密从该字符集中解析为任意字符
加密一个简单字符串,代码如下:
String originalInput = "test input";
String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes());
解密代码如下:
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
二、Java 8 URL 加密
URL加密和上述基本加密类似,它使用URL和文件名安全Base64字母表(没有‘+’和‘/’,增加‘-’和‘_’),不添加任何换行隔,代码如下:
String originalUrl = "https://www.google.co.nz/?gfe_rd=cr&ei=dzbFV&gws_rd=ssl#q=java";
String encodedUrl = Base64.getUrlEncoder().encodeToString(originalURL.getBytes());
解密方式一致--getUrlDecoder() 工具方法返回java.util.Base64.Decoder ,然后解密URL,代码如下:
byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedBytes);
三、Java 8 MIME(Multipurpose Internet Mail Extensions) 加密
首先生成一些基本MIME输入数据用于加密:
private static StringBuilder getMimeBuffer() {
StringBuilder buffer = new StringBuilder();
for (int count = 0; count < 10; ++count) {
buffer.append(UUID.randomUUID().toString());
}
return buffer;
}
MIME加密工具生成Base64加密输出,输出被映射到“A-Za-z0-9+/”字符集中,编码输出必须以每行不超过76个字符的形式表示,并使用后面跟着的回车符’\r’和换行符’\n’为分隔符,代码如下:
StringBuilder buffer = getMimeBuffer();
byte[] encodedAsBytes = buffer.toString().getBytes();
String encodedMime = Base64.getMimeEncoder().encodeToString(encodedAsBytes);
getMimeDecoder() 工具方法返回java.util.Base64.Decoder 用于解密过程:
byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime);
String decodedMime = new String(decodedBytes);
四、总结
本文介绍了java中Base64加密和解密的基本用法,使用java 8 新引入的API。另外还有其他库实现类似功能--java.xml.bind.DataTypeConverter 提供的 printHexBinary 和 parseBase64Binary。
相关阅读:
2、代码网-网站源码-网站模板-技术交流分享站! codewang.net
相关文章
- 操作系统/虚拟化安全知识域:内存保护和地址空间
- 微软正为 Windows 10 / Windows 11 改善图形和音频驱动质量
- Linux 版火狐浏览器 Firefox 110 将支持从 Opera 和 Vivaldi 上导入数据
- ETL工具算法构建企业级数据仓库五步法
- 四个鲜为人知的基于终端的 Linux 文本编辑器
- 处理数据?不要一概而论
- 企业如何从大数据中获得价值?
- apt remove 和 apt purge: 有什么区别?
- 数据驱动增长,我立了个大功
- 数仓如何建模?四种方法与实例都在这了
- 学习 Linux 后的九个优秀职业选择
- Linux 闹钟指南:如何设置提醒或唤醒时间
- 六个已弃用的 Linux 命令和您应该使用的替代工具
- TestOps完全手册:工作流、生命周期、团队和流程
- 互联网时代,游戏和数据中心协同发展
- 怎样在 YAML 中添加注释
- TIOBE 8 月编程语言排行榜:没有一门语言能比得上它!
- 你可以尝试的五个 NeoVim GUI 编辑器
- lnav: 用于 Linux 的高级日志文件浏览器
- 微软 Windows 11Build 22000.1515 (KB5019274) Release 预览版发布(附更新内容大全)