欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java实现Base64加密解密

程序员文章站 2024-02-05 20:39:34
...

前言:为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来,如下是base64编码表:

Java实现Base64加密解密

1.Base64的作用

Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输;由于一些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要进行转换;由于某些系统中只能使用ASCII字符,Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,Base64适合在http,mime协议下快速传输数据,如网络中图片以及表情的传输

Base64并非安全领域下的加密解密算法,base64只能算是一个编码算法,对数据内容进行编码来适合传输

2.Base64的原理

Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上形成8位一个字节的形式;如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’

举例如下:

三个字节的原始数据为: aaaabbbb ccccdddd eeeeffff

编码之后会变成数据为:00aaaabb 00bbcccc 00ddddee 00eeffff

3.Base64加密解密实现两种方式

算法实现方式:

  • Jdk
  • Commons Codec(需要jar包,案例包:commons-codec-1.10.jar)

Jdk的Base64加密解密

package com.example.base64;
import java.util.Base64;
 
public class Base {

    public static void main(String[] args) {
        String msg = "hello world";
        jdkBase64(msg);
        String msg1 = "你好,王帅帅";
        commonsBase64(msg1);
    }

    /*Jdk加密解密*/
    public static void jdkBase64(String msg){

        /*加密*/
        byte[] bytes = msg.getBytes();
        String encoded  = Base64.getEncoder().encodeToString(bytes);
        System.out.println("加密:"+encoded );

        /*解密*/
        byte[] decoded  = Base64.getDecoder().decode(encoded);
        String decodeStr = new String(decoded);
        System.out.println("解密:"+decodeStr);
    }

    /*commonsCodes的base64加密解密*/
    public static void commonsBase64(String msg){

        /*加密*/
        byte[] encode = org.apache.commons.codec.binary.Base64.encodeBase64(msg.getBytes());
        String encodeStr = new String(encode);
        System.out.println("加密:"+encodeStr);

        /*解密*/
        byte[] decode = org.apache.commons.codec.binary.Base64.decodeBase64(encodeStr.getBytes());
        String decodeStr = new String(decode);
        System.out.println("解密:"+decodeStr);

    }
}

Java实现Base64加密解密

附:commonsCodes的base64加密解密方式依赖

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
</dependency>

结语:以上就是针对于Base64加密解密的方式,当然不限于以上两种,同时给博友提供一个在线直接转换工具https://base64.supfree.net/欢迎博友留言提问…

相关标签: Java Base64