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);}
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来示意二进制数据的办法。
Base64编码是从二进制到字符的过亨达返佣HantecMarkets https://www.kaifx.cn/broker/h...,可用于在HTTP环境下传递较长的标识信息。
采纳Base64编码具备不可读性,须要解码后能力浏览。
Base64因为以上长处被广泛应用于计算机的各个领域。
本文解说如何应用Java语言实现Base64的加密和解密。(基于 JDK 1.8 的新增性能 Base64 个性)
初始版本
代码如下:
复制代码
import java.io.UnsupportedEncodingException;
import java.util.Base64;
/**
- @author Miracle Luna
- @version 1.0
- @date 2019/7/3 18:55
*/
public class Base64Converter {
final static Base64.Encoder encoder = Base64.getEncoder();final static Base64.Decoder decoder = Base64.getDecoder();/** * 给字符串加密 * @param text * @return */public static String encode(String text) { byte[] textByte = new byte[0]; try { textByte = text.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String encodedText = encoder.encodeToString(textByte); return encodedText;}