1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java Base64加密解密编码解码

Java Base64加密解密编码解码

时间:2019-01-02 21:15:46

相关推荐

Java Base64加密解密编码解码

起因

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

办法

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

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

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

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

首先是编码

方法很多,我们直接获取个基础的编码器,然后编码

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

编码不能直接传递字符串,需要转化为二进制数传递,返回的还是二进制文件,所以有什么用呢?我们打印一下

可以看出问题了吧,二进制文件已经不是原来的字符编码了

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

解码

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

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);

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

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

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

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

编写Base64编码解码工具包

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

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

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

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

import org.springframework.util.Base64Utils;

方法一览

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

(偷来的狗图,侵删)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。