base64编码加密、解密两种方式Java实现【详解】

本文详细介绍了Base64编码原理和规则,包括如何将3个字节转换为4个字节,每76个字符添加换行符。通过举例展示了手动编码过程,并提供了Java实现Base64编码的两种方式,验证了编码的正确性。
摘要由CSDN通过智能技术生成

Base64编码说明

Base64一种编码方式,编码方式并不是加密而是通过某种方式将数据在传输的时候更加方便。
Base64是网络上最常见的用于8Bit字节码的编码方式之一,Base64就是一种基于64个可以打印字符来表示二进制数据的方法。
说的再简单一点Base64编码就是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性。

原理规则

  • 1、把3个字节变成4个字节。
  • 2、每个76个字符加一个换行符。
  • 3、最后的结束符也要处理。

例一

我们举个简单的例子,Hello world的编码过程。
首先我们要将Hello world通过ASll对照表,我们先将器对应的十六进制找出来。下方有Ascii对照表。
0x48 65 6C 6C 6F 20 57 6F 72 6C 64
找出对应的16进制之后,转为二进制。

16进制 二进制
48 01001000
65 01100101
6C 01101100
6C 01101100
6F 01101111
20 00100000
57 01010111
6F 01101111
72 01110010
6C 01101100
64 01100100

之后将对应二进制数据,三个一组然后再将一组分为四组。分完后应该每组有6位,在前面填上两个0凑成8位。说的有点绕举个简单的例子。
01010101 11101101 11010110
分成四组后
00010101 00011110 00110111 00010110
好之后我们将上面Hello World的二进制数据分一下
00010010 00000110 00010101 00101100 00011011 00000110 00111100 00100000 00010101 00110110 00111101 00110010 00011011 00000110 0001000
转化为10进制
18 6 21 44 27 6 60 32 21 54 61 50 27 6 4
然后按照对照表进行对照可以得到SGVsbG8gV29ybGQ,这就是通过Base64编码过后的数据。

java两种实现Base64加密的方式

我们通过这两种方式来验证上面,我们手动算出的对不对。

//方式一
@Test
void contextLoads() throws IOException {
   
    String str = "Hello World";

    //加密
    byte[] encode = Base64.getEncoder().encode(str.getBytes());
    String encodeStr = new String(encode);
    System.out.println(encodeStr);
    //解密
    byte[] decode = Base64.getDecoder().decode(encodeStr);
    String decodeStr = new String(decode);
    System.out.println(decodeStr);
}

//方式二
@Test
public void test() throws IOException {
   
   
   String str = "Hello World";
   //加密
   String encode = new BASE64Encoder()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gussu-毛虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值