java实现Base64加密解密算法

Java实现Base64加密解密算法攻略

什么是Base64?

Base64是一种将二进制数据编码成ASCII字符的方法,常用于在URL、Cookie、网页中传输少量二进制数据。它是由64个字符组成的字符集,其编码方式是将3个8位数的字符转换为4个6位数的字符,然后在6位数的前面补两个0的方法,即共有64个不同的编码字符,形如:

A - Z, a - z, 0 - 9, +, /

Base64的特点

  • 原始数据长度不是3的倍数的话,最后会补足1或2个0
  • 编码后数据长度是原始数据长度的4/3
  • 解码的时候,将有4个字符的串看成一个整体,在将这个整体解析成3个字节的一组,在转换成8位二进制数

Java实现Base64加密解密算法

Java中有一个Base64类,位于java.util包中,实现了Base64编码和解码技术。我们可以使用这个类来完成Base64加密和解密。

Base64类提供了以下方法:

  • encode(byte[] data):将字节数组进行64位编码,返回编码后的字符串
  • encodeToString(byte[] data):将字节数组进行64位编码,并返回一个Base64编码后的字符串
  • decode(String str):将Base64编码过的字符串解码成字节数组
  • decode(byte[] data):将字节数组解码成一个字符串

示例1:使用Base64类完成字符串的加密和解密

import java.util.Base64;

public class Base64Utils {

    public static String encode(String str) {
        return Base64.getEncoder().encodeToString(str.getBytes());
    }

    public static String decode(String str) {
        return new String(Base64.getDecoder().decode(str));
    }

    public static void main(String[] args) {
        String str = "Base64加密解密算法示例";
        String encodedStr = encode(str);
        String decodedStr = decode(encodedStr);
        System.out.println("原始字符串:" + str);
        System.out.println("加密后字符串:" + encodedStr);
        System.out.println("解密后字符串:" + decodedStr);
    }
}

输出结果:

原始字符串:Base64加密解密算法示例
加密后字符串:QmFzZTY0JUU0JUJEbyVFNCVCNyU5OCVFNCVCQiU5NyVFNCVCMSU5NyVFNCVCNyU5NSVFNCVCQiU4MCVFNCVCNCU5NyVFNCVCOCU5MyVFNCVCMyU5MSVFNCVCMyU4NSVFNCVCMyU4OSVFNCVCNyU4OCVFNCVCNyU5MSU5MCVFNCVCNCU5QyVFNCVCMyU4RiVFNCVCOCVFNCVCNCU5NCVFNCVCNCU5MSVFNCVCNyU4NiVFNCVCNyU5Mg==
解密后字符串:Base64加密解密算法示例

示例2:使用Base64类完成图片的加密和解密

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;

public class Base64ImageUtils {

    public static void encode(String imagePath) throws Exception {
        byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));
        String encodedImage = Base64.getEncoder().encodeToString(imageBytes);
        System.out.println("图片Base64编码:" + encodedImage);
    }

    public static void decode(String imagePath, String encodedImage) throws Exception {
        byte[] decodedImage = Base64.getDecoder().decode(encodedImage);
        Files.write(Paths.get(imagePath), decodedImage);
    }

    public static void main(String[] args) throws Exception {
        String imagePath = "/Users/user/Desktop/sample.png";
        encode(imagePath);
        String encodedImage = "iVBORw0KGg...";
        decode(imagePath, encodedImage);
        System.out.println("图片解密成功");
    }
}

输出结果:

图片Base64编码:iVBORw0KGg...
图片解密成功

总结

Java中的Base64类使实现Base64加密和解密变得简单。该类的方法提供了对应的功能,通过调用相应方法即可完成加密和解密。Base64的编码和解码应用广泛,可以用于数据传输,在安卓中加载图片,还可以实现身份验证等功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现Base64加密解密算法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring远程调用HttpClient/RestTemplate的方法

    Spring远程调用HttpClient/RestTemplate的方法 HttpClient 首先需要导入相关依赖,可以使用maven,在pom.xml文件中添加以下依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&g…

    Java 2023年5月19日
    00
  • SpringBoot项目打包发布到外部tomcat(出现各种异常的解决)

    下面我就为您讲解SpringBoot项目打包发布到外部Tomcat的完整攻略,包括出现各种异常的解决方法。 一、生成war包 在pom.xml中添加以下代码,用于生成war包: <packaging>war</packaging> 在pom.xml中添加以下代码,排除掉内嵌的Tomcat插件: <dependency> &…

    Java 2023年6月2日
    00
  • 如何使用Java字节码操纵库?

    Java字节码操纵库是一个用于读写、操纵Java字节码的工具库,常用于动态生成和修改字节码,实现AOP、代码增强等功能。本文将详细讲解Java字节码操纵库的使用攻略,包括环境配置、库的选择、常用API使用示例等。 环境配置 在开始使用Java字节码操纵库之前,我们需要确保系统已安装JDK,建议使用JDK 8及以上版本。然后,我们需要下载并导入所选的字节码操纵…

    Java 2023年5月11日
    00
  • Java实现微信公众号发送模版消息

    Java实现微信公众号发送模版消息 发送模版消息是微信公众号开发中非常常用的功能,通过发送模版消息可以给用户提供更加丰富的服务。本文将详细讲解如何使用Java实现微信公众号发送模版消息的攻略。 准备工作 在开始之前,需要先准备好以下两个东西: 微信公众号的AppID和AppSecret; 微信模版ID。 在此不再赘述如何获取AppID和AppSecret,读…

    Java 2023年5月23日
    00
  • Spring常用一些工具类实例汇总

    Spring常用一些工具类实例汇总 在Spring框架中,常用一些工具类方便开发和维护。本文将对一些常用的Spring工具类进行汇总和详细讲解。 1. Resource Resource作为一个资源文件的接口,提供了一个抽象的资源操作方式。Spring提供了很多实现这个接口的类。 使用示例1: 读取本地文件资源 Resource resource = new…

    Java 2023年5月19日
    00
  • Java源码刨析之ArrayDeque

    Java源码刨析之ArrayDeque Java中的ArrayDeque是一种基于动态数组的双端队列数据结构。本篇文章将与读者一起深入分析Java中ArrayDeque的源代码,从中学习这种数据结构的实现原理。 容量扩充 由于使用动态数组来存储队列中的元素,因此在添加元素时,需要判断是否需要扩展数组的容量。容量扩充的代码实现如下: private void …

    Java 2023年5月26日
    00
  • 带你详细了解Spring Security的注解方式开发

    让我来详细讲解一下“带你详细了解Spring Security的注解方式开发”的完整攻略。 什么是Spring Security? Spring Security是一个基于Spring框架的安全框架,它提供了一组细粒度的安全性控制手段,并可以轻松地与其他Spring框架集成使用。Spring Security主要包括认证、授权和攻击防护等功能,可以帮助Web…

    Java 2023年5月20日
    00
  • Java实现简单客户信息管理系统

    下面是Java实现简单客户信息管理系统的完整攻略: 目录 项目介绍 技术栈 实现步骤 示例说明 总结 1. 项目介绍 本项目是一个简单的客户信息管理系统,主要实现以下功能: 显示所有客户信息 添加客户信息 修改客户信息 删除客户信息 按照姓名查询客户信息 2. 技术栈 Java语言 MySQL数据库 JDBC 3. 实现步骤 创建数据库和表格 首先我们需要创…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部