BASE64加密解密(两种方式)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 1. 简介
  • 2. Base64Utils
    • 2.1 代码
    • 2.2 使用
    • 2.3 输出
  • 3. Base64Utils2
    • 3.1 代码
    • 3.2 使用
    • 3.3 输出
  • 4. 直接使用
    • 4.1 代码
    • 3.2 输出
  • 5. 总结


加密解密的相关文章参考:
BASE64加密解密
MD5加密
SHA加密解密
RSA加密解密

1. 简介

严格来说BASE64的加密解密是指编码格式,而非加密算法
我们暂且将它归为加解密方式的一种

对于Base64的使用有两种方式:
第一种直接使用sun.misc包下的BASE64工具
第二种是使用org.springframework包下的Base64Utils工具

相较于第一种,第二种更为方便。

下面封装了两个工具类以及一个直接使用的例子

2. Base64Utils

使用sun的misc包下的BASE64(不建议使用)

2.1 代码

Base64Utils.java

package com.libai.utils.encryption_utils;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;

/**
 * @ClassDescription: 不能算加密算法,只能叫编码格式,这里也把他归为加密的一种
 * 注意,java中可以直接使用org.springframework.util.Base64Utils
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/3/23 10:35
 */
public class Base64Utils {

    /**
     * 加密字符串
     * @param str 需要加密的字符串
     * @return 返回加密后的字符串
     */
    public static String encryptBase64(String str){
        byte[] bytes = str.getBytes();
        BASE64Encoder base64Encoder = new BASE64Encoder();
        String encryptStr = base64Encoder.encodeBuffer(bytes);
        return encryptStr;
    }

    /**
     * 解密字符串
     * @param str 需要解密的字符串
     * @return 返回解密后的字符串内容
     */
    public static String decryptBase64(String str){
        BASE64Decoder base64Decoder = new BASE64Decoder();
        byte[] bytes = new byte[0];
        try {
            bytes = base64Decoder.decodeBuffer(str);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String decryptStr = new String(bytes);
        return decryptStr;
    }
}

2.2 使用

编写main方法,应用
Base64Test.java

package com.libai.test.encrypt_test;

import com.libai.utils.encryption_utils.Base64Utils;

/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/3/23 11:00
 */
public class Base64Test {

    public static void main(String[] args) {

        String string = "123456asd";
        System.out.println("所输入的字符串:"+string);
		//加密
        String encryptStr = Base64Utils.encryptBase64(string);
        System.out.println("加密后的字符串:"+encryptStr);
		//解密
        String decryptStr = Base64Utils.decryptBase64(encryptStr);
        System.out.println("解密后的字符串:"+decryptStr);


    }

}

2.3 输出

执行方法输出加密和解密的内容
在这里插入图片描述

3. Base64Utils2

org的springframework.utils包下的Base64Utils

3.1 代码

Base64Utils2.java

package com.libai.utils.encryption_utils;

import org.springframework.util.Base64Utils;

/**
 * @ClassDescription: 直接使用java自带的Base64Utils工具封装的加解密方法
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/3/23 15:00
 */
public class Base64Utils2 {

    /**
     * 加密
     * @param str 需要加密的字符串
     * @return 加密后的字符串
     */
    public static String base64UtilsEncrypt(String str){

        return Base64Utils.encodeToString(str.getBytes());

    }

    /**
     * 解密
     * @param str 需要解密的字符串
     * @return 解密后的字符串
     */
    public static String base64UtilsDecrypt(String str){

        byte[] bytes = Base64Utils.decodeFromString(str);
        return new String(bytes);

    }

}

3.2 使用

编写main方法,应用
Base64Test.java

package com.libai.test.encrypt_test;

import com.libai.utils.encryption_utils.Base64Utils2;

/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/3/23 11:00
 */
public class Base64Test {

    public static void main(String[] args) {

        String string = "123456asd";
        System.out.println("所输入的字符串:"+string);

        String encryptStr2 = Base64Utils2.base64UtilsEncrypt(string);
        System.out.println("加密后的字符串:"+encryptStr2);

        String decryptStr2 = Base64Utils2.base64UtilsDecrypt(encryptStr2);
        System.out.println("解密后的字符串:"+decryptStr2);
    }
}

3.3 输出

执行,查看加密解密的结果
在这里插入图片描述

4. 直接使用

在代码中直接使用java的Base64Utils工具类

4.1 代码

直接使用
Base64Test.java

package com.libai.test.encrypt_test;

import org.springframework.util.Base64Utils;

/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/3/23 11:00
 */
public class Base64Test {

    public static void main(String[] args) {

        String string = "123456asd";
        System.out.println("所输入的字符串:"+string);
		//加密
        String encryptStr2 = Base64Utils.encodeToString(string.getBytes());
        System.out.println("加密后的字符串:"+encryptStr2);
		//解密
        byte[] bytes = Base64Utils.decodeFromString(encryptStr2);
        String decryptStr2 = new String(bytes);
        System.out.println("解密后的字符串:"+decryptStr2);
    }

}

3.2 输出

执行,查看加密解密的结果
在这里插入图片描述

5. 总结

对于Base64的使用,仅限于简单加密需求的编码解码
对于安全性较高的需求尽量使用更为安全的加密解密方式


感谢阅读,祝君暴富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/486823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visio导出高质量图片

直接导出图片比较糊, 在导出高质量图片,应该 直接保存,然后弹出此选项,进行如下设置 即可导出高质量图片

羊大师分析春季喝羊奶,滋养正当时!

羊大师分析春季喝羊奶,滋养正当时! 随着春天的到来,大地万物复苏,生机勃勃。在这个充满希望的季节里,我们的身体也需要得到充分的滋养与呵护。而羊奶,作为一种营养丰富、口感醇厚的奶制品,无疑…

[NOIP2013 普及组] 车站分级

抽象出差分约束 然后还有一点就是建立超级源点 优化建图 然后就是比较有趣的拓扑图求差分约束了其实spfa也可 #include<bits/stdc.h> using namespace std; using ll long long;const int N 2e610; const int inf 0x3f3f3f3f; const int mod 1e97;int n,q,m;int e[N…

3月份的倒数第二个周末有感

坐在图书馆的那一刻&#xff0c;忽然感觉时间的节奏开始放缓。今天周末因为我们两都有任务需要完成&#xff0c;所以就选了嘉定图书馆&#xff0c;不得不说嘉定新城远香湖附近的图书馆真的很有感觉。然我不经意回想起学校的时光&#xff0c;那是多么美好且短暂的时光。凝视着窗…

红黑树进阶:正向与反向迭代器的实现及map、set的封装实践

文章目录 一、引言二、红黑树迭代器设计1、迭代器的基本概念和分类2、正向迭代器设计a.迭代器结构定义b.迭代器的 与 -- 3、反向迭代器设计a.反向迭代器的必要性b.反向迭代器的实现要点 4、红黑树封装迭代器 三、使用红黑树实现Map四、红黑树实现Set五、细节理解1、 typname的使…

【超图 SuperMap3D】【基础API使用示例】51、超图SuperMap3D - 绘制圆|椭圆形面标注并将视角定位过去

前言 引擎下载地址&#xff1a;[添加链接描述](http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id2524) 绘制圆形或者椭圆形效果 核心代码 entity viewer.entities.add({// 圆中心点position: { x: -1405746.5243351874, y: 4988274.8462937465, z: 370…

Web漏洞-SQL注入之二次、加密、DNS加密注入

实例1&#xff1a;sqli-labs21 输入admin&#xff0c;admin 测试&#xff1a; 可以看到注入点在cookie处&#xff0c;发送到decoder&#xff08;解密&#xff09; 所以如果要注入&#xff0c;需要将注入语句加密 Eg&#xff1a;admin’ and 11加密后&#xff1a;YWRtaW4ZIGFu…

重学SpringBoot3-Profiles介绍

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现二

【简单介绍】 基于目标检测算法YOLOv8和灵活的PyQt5界面开发框架&#xff0c;我们精心打造了一款集直观性、易用性和功能性于一体的目标检测GUI界面。通过深度整合YOLOv8在目标识别上的卓越能力与PyQt5的精致界面设计&#xff0c;我们成功研发出一款既高效又稳定的软件GUI。 …

中等职业学校大数据课程建设方案

大数据产业是以数据及数据所蕴含的信息价值为核心生产要素&#xff0c;通过数据技术、数据产品、数据服务等形式&#xff0c;使数据与信息价值在各行业经济活动中得到充分释放的赋能型产业。 大数据产业定义一般分为核心业态、关联业态、衍生业态三大业态。 一、专…

SaaS模式java智慧工地源码 有演示 AI视频智能分析解决工地安监需求

SaaS模式java智慧工地源码 AI视频智能分析解决工地安监需求 有演示 智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术&#xff0c;以PC端&#xff0c;移动端&#xff0c;平板端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳…

【python从入门到精通】--第一战:安装python

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

HDFS集群环境配置

HDFS集群环境配置 环境如下三台服务器&#xff1a; 192.168.32.101 node1192.168.32.102 node2192.168.32.103 node3 一、Hadoop安装包下载​​​​​​​ 点此官网下载​​​​​​​ 二、Hadoop HDFS的角色包含&#xff1a; NameNode&#xff0c;主节点管理者DataNode&am…

大博主都不告诉你的视频号下载工具!提取视频小程序

视频下载plus一款专业的视频号视频提取工具分享平台&#xff0c;免费提供视频号视频使用教程&#xff0c;勿用于商业价值&#xff0c;分享视频下载助手以及提取视频小程序&#xff0c;仅供学习和交流。 视频下载工具 1:视频下载工具&#xff1a;常见的有视频下载软件&#xf…

计算机三级网络技术 选择+大题234笔记

上周停去准备计算机三级的考试啦&#xff0c;在考场上看到题目就知道这次稳了&#xff01;只有一周的时间&#xff0c;背熟笔记&#xff0c;也能稳稳考过计算机三级网络技术&#xff01;

【算法分析与设计】链表排序

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 示例 1&#xff1a; 输入&#xff1a;head […

计算机软考初级含金量高吗?

并不是说软考初级就没有含金量&#xff0c;对于想评初级职称的考生来说还是很有用处的。根据 国人部 发[2003]39号&#xff1a;通过考试获得证书的人员&#xff0c;表明其已具备从事相应专业岗位工作的水平和能力&#xff0c;用人单位可根据工作需要从获得证书的人员中择优聘任…

Wireshark使用实训---分析IP包

1.Wireshark简介和作用 Wireshark是一个开源的网络分析工具&#xff0c;用于捕捉和分析网络数据包。它可以帮助网络管理员和安全专家监控和解决网络问题&#xff0c;同时也可以用于学习和教学网络通信原理。 Wireshark可以在网络中捕获和分析传输的数据包&#xff0c;包括协议…

OceanBase4.2.2.1 单机集群在ArmX86安装(自测记录)

OceanBase OceanBase就不必多加介绍了&#xff0c;本次主要是分享对于它的安装使用&#xff0c;先说说背景&#xff0c;首先接触是因为信创国产化的要求&#xff0c;为满足支持国产化&#xff0c;安装了Arm架构下版本4.0.0&#xff0c;满足支持通过。后来项目实际使用&#xff…

Oracle数据库入门第二课(查询)

前面二白详细讲了一下如何下载安装Oracle以及插件&#xff0c;下面咱们正式学习一下Oracle数据库的查询语言。 DQL:数据库查询语言 一、简单查询 关键字:oracle数据库定义好的有特殊含义的字符 我们的sql语句就是由多种关键字组合而成 语法: select 要查询的内容 from 数…
最新文章