Java Base64 加密与解密示例代码

作者:吳名氏 时间:2022-11-13 15:11:56 

一、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加密输出,输出被映射到&ldquo;A-Za-z0-9+/&rdquo;字符集中,编码输出必须以每行不超过76个字符的形式表示,并使用后面跟着的回车符&rsquo;\r&rsquo;和换行符&rsquo;\n&rsquo;为分隔符,代码如下:

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。
        另外还有其他库实现类似功能&mdash;&mdash;java.xml.bind.DataTypeConverter 提供的 printHexBinary 和 parseBase64Binary。

来源:https://blog.csdn.net/qq_37284798/article/details/124921080

标签:Java,Base64,加密,解密
0
投稿

猜你喜欢

  • Java递归来实现汉诺塔游戏,注释详细

    2023-07-05 10:33:52
  • 实例解析如何正确使用Java数组

    2023-04-14 23:00:55
  • Springboot+ElementUi实现评论、回复、点赞功能

    2022-06-16 04:34:00
  • java input 调用手机相机和本地照片上传图片到服务器然后压缩的方法

    2023-04-26 08:20:27
  • java实现斗地主发牌功能

    2022-01-14 14:27:32
  • 深入理解Java中的弱引用

    2023-07-19 20:14:53
  • Java排序的那些事之sort方法的使用详解

    2023-01-22 00:18:35
  • C#使用linq对数组进行筛选排序的方法

    2023-12-06 06:21:21
  • 基于C#调用c++Dll结构体数组指针的问题详解

    2021-12-10 23:16:41
  • 一文搞懂Java中的序列化与反序列化

    2021-11-22 00:26:45
  • struts2实现文件上传显示进度条效果

    2021-11-19 16:16:21
  • 详解Java使用Pipeline对Redis批量读写(hmset&hgetall)

    2023-11-17 15:17:24
  • Java中七种排序算法总结分析

    2023-03-27 19:41:44
  • Java栈和基础队列的实现详解

    2023-07-02 05:36:59
  • Java多线程之synchronized关键字的使用

    2023-12-12 21:46:16
  • JavaWeb详细讲述Cookie和Session的概念

    2022-03-23 08:39:44
  • 解析SpringSecurity自定义登录验证成功与失败的结果处理问题

    2021-09-01 16:42:59
  • springboot+mybatis-plus 两种方式打印sql语句的方法

    2022-12-29 13:41:11
  • Java日常练习题,每天进步一点点(2)

    2023-08-17 22:46:19
  • Java 详解包装类Integer与int有哪些共通和不同

    2022-06-15 20:12:18
  • asp之家 软件编程 m.aspxhome.com