起因

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

办法

目前打算采用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全家桶还是香啊,小声比比-。-),点个赞

Java Base64加密解密编码解码相关推荐

  1. Java base64加密解密 两种实现方式

    1.为什么要使用Base 64 Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输. 由于一些二进制字符在传输协议中属于 控制字符,不能直接传送,所以需要转换一下才可以. ...

  2. Java Base64 加密解密 (数据加密或解决手机Emoji表情被数据库过滤掉的问题)

    2017年06月08日 10:15:19 glimmer_it 阅读数:359更多 个人分类: 安全加密 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  3. JAVA Base64加密解密

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  4. JavaScript Eval Encode/Decode JavaScript Eval 在线加密/解密, 编码/解码工具

    eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fr ...

  5. java Base64加密解密中文乱码处理

    前端:因base64对中文支持不友好,故需要对中文进行编码之后再转base64 var sendData = { 'inserted':encode64(encodeURIComponent(JSON ...

  6. 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  7. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]

    用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util;   im ...

  8. java base64加密与解密

    目录 前言 一.base64加密与解密 1. base64有填充的编码与解码 2. base64无填充的编码与解码 二.MIME友好型base64加密与解密 前言 Base64 编码会将字符串编码得到 ...

  9. asp php base64 加密解密,base64加密解密_php base64_decode 解码方法

    base64加密解密_php base64_decode 解码方法 观点1: php实现base64加密解密 在PHP中我们可以直接使用PHP自带的函数 base64_encode() 和 base6 ...

最新文章

  1. python画直方图代码-Python使用Plotly绘图工具,绘制直方图
  2. 二分图最大匹配 -- 匈牙利算法
  3. Java柏林算法,柏林噪音 - 我做错了什么?
  4. 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
  5. 货币化物联网:实现收益
  6. Java中4种引用类型笔记
  7. matlab——矩阵运算
  8. 留学时在海外如何解决国内手机验证码问题?
  9. cpu性能天梯图服务器 4210,手机CPU性能天梯图
  10. 最全面的安卓编码规范
  11. 东方时尚驾校学习心得
  12. Django(wsgi,middleware,url源码剖析)
  13. 计算机网络的雏形为,计算机网络的发展雏形是什么
  14. 咳血的独角兽5——挥向投资人的镰刀
  15. m-TRP transmission for URLLC(draft)
  16. 二叉平衡树复杂度!!!
  17. graphql_GraphQL简介
  18. Android学习之RecyclerView的使用
  19. 新课程改革的理论基础究竟是什么
  20. JS之父再谈JS历史(一)

热门文章

  1. 基于微信JAVA后台校园小程序系统设计与实现 开题报告
  2. 仓库管理员怎样做台账_福利好企业SKF招聘测量检查员和仓库管理员,还在等什么快来报名吧...
  3. 第19节 三个败家子(19)——史上最牛太守孙坚
  4. 时隔一个月今日头条又宕机了 这个技术公司的“月经宕”有点频繁
  5. 从拉新、促活/留存和营收说起,做运营到底是在做什么?(FW)
  6. layout=“null”说什么意思
  7. [小黄书管理平台]Angularjs 2.0应用的国际化
  8. C++学习之路(六),C++primer plus 第七章 函数--C++的编程模块
  9. 一张足够长厚5mm的纸折叠多少次高度可以超过珠穆朗玛峰
  10. Swapping Places题解