当前位置:   article > 正文

Java Base64加密解密编码解码_base64.getencoder

base64.getencoder

起因

最近因为项目要做等保,需要对用户提交的字段进行加密存储,但是还需要做查询,所以需要能解密。

办法

目前打算采用rsa非对称加密保存数据,实现数据加密和解密,但是很尴尬的发现生成的公钥和秘钥居然是对象,且不能直接打印输出,网上看了一下,发现大多数的做法是把对象转化为二进制数据,然后使用base64进行编码

注:编码(为什么用编码,因为实际上base64不能称为强加密,很容易识别而且容易破解,但是编码后利于传输,不是明文传输,也算是一种手段吧,速度快,好用,是常见的使用方法)

但是我发现网上很多base64的方法居然用不了,我用的是jdk1.8,使用的包是import java.util.Base64;

那就来试试,如何快速使用编码解码吧。

首先是编码

在这里插入图片描述
方法很多,我们直接获取个基础的编码器,然后编码

Base64.Encoder encoder = Base64.getEncoder();
String hello="hello 中国!";
byte[] encode = encoder.encode(hello.getBytes());
  • 1
  • 2
  • 3

编码不能直接传递字符串,需要转化为二进制数传递,返回的还是二进制文件,所以有什么用呢?我们打印一下
在这里插入图片描述
在这里插入图片描述
可以看出问题了吧,二进制文件已经不是原来的字符编码了

需要解码才能还原字符串,文件也是一样。

解码

解码比较简单,入参可以是二进制也可以是字符串,同样构造一个解码器

		Base64.Encoder encoder = Base64.getEncoder();
        String hello="hello 中国!";
        byte[] encode = encoder.encode(hello.getBytes());
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] decode = decoder.decode(encode);
        byte[] decode2 = decoder.decode(new String(encode));
        String str1 = new String(decode);
        String str2 = new String(decode2);
        System.out.println(str1);
        System.out.println(str2);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

都可以输出正常的文字,表示解码成功

所以base64编码解码是jdk本身已经实现了的,可以在任意的Java环境下直接使用

可以把二进制的文件编码,如果不是二进制的文件,转化为二进制,比如字符串的getBytes()

同样是对于二进制编码文件解码,虽然可以支持字符串入参实际上还是转化为二进制再进行解码。下面是源码。懂?
在这里插入图片描述

编写Base64编码解码工具包

既然原理和使用方法都知道了,那么我们写一个工具包,下次直接用吧,如果对你有帮助,你可以直接复制代码去用,去看,去研究(不过我想我前面讲解的应该懂了吧,狗头-,-)。

点赞加关注,好运挡不住。

我正准备写个工具包,想了下,看了下spring是不是有工具包了,然后我输入Base64Utils,还真有,idea太好用了…

(别打我,我真不知道,早知道有,我写个寂寞。。。)

import org.springframework.util.Base64Utils;

方法一览
在这里插入图片描述

所以… ,虽然没有写成工具包,但是只要你明白编码解码的原理和过程,那你自己写也是可以的。(当然spring全家桶还是香啊,小声比比-。-),点个赞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/881664
推荐阅读
相关标签