1、为什么要使用Base 64

Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输。 由于一些二进制字符在传输协议中属于

控制字符,不能直接传送,所以需要转换一下才可以。由于某些系统中只能使用ASCII字符,Base64就是用来将非ASCII字符的数

据转换成ASCII字符的一种方法,Base64特别适合在http,mime协议下快速传输数据。比如网络中图片的传输。

Base64,并非安全领域下的加密解密算法。虽然经常遇到所谓的base64的加密解密。但base64只能算是一个编码算法,对数

据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是方式初级又简单。

2、Base 64 原理

Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效

数据,空余的那两个 bit用0补上成为一个字节。因此Base64所造成数据冗余不是很严重,Base64是当今比较流行的编码方法,

因为它编起来速度快而且简单。

 举个例子,有三个字节的原始数据:aaaaaabb bbbbccccc ccdddddd(这里每个字母表示一个bit位)
 那么编码之后会变成:      00aaaaaa 00bbbbbb 00cccccc 00dddddd

所以可以看出base64编码简单,虽然编码后不是明文,看不出原文,但是解码也很简单

2、Base64加密解密的实现方式:两种

package com.liuxd;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import java.util.Base64;/*** Created by Liuxd on 2018-11-02.*/
public class TestString {public static void main(String[] args) throws Exception {String str = "青锋剑,偃月刀";base64(str);enAndDeCode(str);}/*** Base64**/public static void base64(String str) {byte[] bytes = str.getBytes();//Base64 加密String encoded = Base64.getEncoder().encodeToString(bytes);System.out.println("Base 64 加密后:" + encoded);//Base64 解密byte[] decoded = Base64.getDecoder().decode(encoded);String decodeStr = new String(decoded);System.out.println("Base 64 解密后:" + decodeStr);System.out.println();}/*** BASE64加密解密*/public static void enAndDeCode(String str) throws Exception {String data = encryptBASE64(str.getBytes());System.out.println("sun.misc.BASE64 加密后:" + data);byte[] byteArray = decryptBASE64(data);System.out.println("sun.misc.BASE64 解密后:" + new String(byteArray));}/*** BASE64解密* @throws Exception*/public static byte[] decryptBASE64(String key) throws Exception {return (new BASE64Decoder()).decodeBuffer(key);}/*** BASE64加密*/public static String encryptBASE64(byte[] key) throws Exception {return (new BASE64Encoder()).encodeBuffer(key);}
}

输出结果:

Base 64 加密后:6Z2S6ZSL5YmR77yM5YGD5pyI5YiA
Base 64 解密后:青锋剑,偃月刀

sun.misc.BASE64 加密后:6Z2S6ZSL5YmR77yM5YGD5pyI5YiA

sun.misc.BASE64 解密后:青锋剑,偃月刀

Java base64加密解密 两种实现方式相关推荐

  1. [转]DES加密 java与.net可以相互加密解密两种方法

    [转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...

  2. java 数组合并_拼接_详解Java合并数组的两种实现方式

    详解Java合并数组的两种实现方式 发布于 2020-7-27| 复制链接 摘记: 最近在写代码时遇到了需要合并两个数组的需求,突然发现以前没用过,于是研究了一下合并数组的方式,总结如下.1.Syst ...

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

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

  4. java MD5加密的两种方法总结

    MD5加密,比如数据库中密码等敏感字段需要加密存储,核对密码时先以同样的方式对用户输入的密码进行加密,再与数据库中存储的密码比较. MD5加密有很多种实现方式,此处介绍2种. 1.使用JDK自带Mes ...

  5. Java 遍历treemap_TreeMap的两种遍历方式

    Map的遍历方式有两种   一种是entrySet   而另一种是 Keyset KeySet遍历的核心代码: Map map = new HashMap(); Set ks = map.KeySet ...

  6. Java SHA-256加密的两种实现方法详解

    利用Apache的工具类实现加密,使用commons-codec包中的DigestUtils算法工具类(入参支持字符串.字节数组.文件流等): maven: 1 2 3 4 5 <depende ...

  7. JAVA Base64加密解密

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

  8. Java Base64加密解密编码解码

    起因 最近因为项目要做等保,需要对用户提交的字段进行加密存储,但是还需要做查询,所以需要能解密. 办法 目前打算采用rsa非对称加密保存数据,实现数据加密和解密,但是很尴尬的发现生成的公钥和秘钥居然是 ...

  9. android java 退出程序_android开发两种退出程序方式(killProcess,System.exit)

    KillProcess: 在android中我们如果想要程序的进程结束可以这样写: android.os.Process.killProcess(android.os.Process.myPid()) ...

最新文章

  1. Android Activity:四种启动模式,Intent Flags和任务栈(转自他人博客)
  2. Github入门学习
  3. input获得焦点和失去焦点
  4. android super this区别
  5. C#/C++/Fortran 在32位/64位下数学计算性能对比
  6. postman发送报文时请求时间超时因为什么_面试官说不要再问我三次握手和四次挥手是什么了...
  7. 一种开发AJAX的方法,ajax.dll
  8. php递归简单例子,php递归json类实例
  9. MPLS LDP邻居建立
  10. Access Modify Change 三种时间戳详解
  11. l4d2服务器修改武器伤害,辐射4武器伤害及护甲修改攻略
  12. 惠普HP Designjet 5100 打印机驱动
  13. C# 西门子PLC上位机开发环境搭建
  14. GIS数据恢复(ArcMap)地理数据库误删
  15. python成都 培训
  16. Python记:列表和元组之序列相加
  17. python_matplotlib改变横坐标和纵坐标上的刻度(ticks)
  18. Quick BI 数据大屏快速入门
  19. 计算机网络局域网的组建实验报告,《计算机网络》局域网的组建与测试实验报告...
  20. flex布局文本不换行

热门文章

  1. Thinkpad X200 换屏记
  2. G002-186-18
  3. MATLAB中sin(i)求和
  4. 作为一个程序员应该看的书籍
  5. 程序员的半衰期只有15年
  6. 半导体设备基本通信标准介绍系列之-开篇
  7. 办理3C认证多少钱?包含哪些费用?
  8. python 二维码制作
  9. 红米note8pro微信无法连接服务器,在红米Note8Pro微信浏览网页background-image图片无法加载?...
  10. cocos2dx:重力加速度,自由落体:利用update()就能快速实现精灵自由落体运动