• Java Base64 加密与解密


    一、Java 8 基本 Base64

    基本的加密尽量保持简单,加密输入字符串没有增加任何换行符。输出被映射到“A-Za-z0-9+/”字符集中,解密从该字符集中解析为任意字符

    加密一个简单字符串,代码如下:

    String originalInput = "test input";
    String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes());
    
    • 1
    • 2

    解密代码如下:

    byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
    String decodedString = new String(decodedBytes);
    
    • 1
    • 2

    二、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());
    
    • 1
    • 2

    解密方式一致——getUrlDecoder() 工具方法返回java.util.Base64.Decoder ,然后解密URL,代码如下:

    byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrl);
    String decodedUrl = new String(decodedBytes);
    
    • 1
    • 2

    三、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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    MIME加密工具生成Base64加密输出,输出被映射到“A-Za-z0-9+/”字符集中,编码输出必须以每行不超过76个字符的形式表示,并使用后面跟着的回车符’ ’和换行符’ ’为分隔符,代码如下:

    StringBuilder buffer = getMimeBuffer();
    byte[] encodedAsBytes = buffer.toString().getBytes();
    String encodedMime = Base64.getMimeEncoder().encodeToString(encodedAsBytes);
    
    • 1
    • 2
    • 3

    getMimeDecoder() 工具方法返回java.util.Base64.Decoder 用于解密过程:

    byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime);
    String decodedMime = new String(decodedBytes);
    
    • 1
    • 2

    四、总结

    本文介绍了java中Base64加密和解密的基本用法,使用java 8 新引入的API。
    另外还有其他库实现类似功能——java.xml.bind.DataTypeConverter 提供的 printHexBinary 和 parseBase64Binary。

  • 相关阅读:
    请求 响应
    excel高级绘图技巧100讲(二十三)-Excel中实现倒计时计数
    JavaScript this 关键字
    广度优先搜索(BFS)
    学习虚幻C++开发日志——基础案例(持续更新中)
    识别和定位 - 实现工业自动化及生产数字化,推动现代工业4.0
    Python数据分析实战-爬取以某个关键词搜索的最新的500条新闻的标题和链接(附源码和实现效果)
    PyTorch 模型性能分析和优化 - 第 6 部分
    攻防世界----unfinish
    Jmeter接口测试——使用教程(上)
  • 原文地址:https://blog.csdn.net/bhegi_seg/article/details/126582370