乐趣区

Java-base64的加密过程解读

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;
}
退出移动版