赞
踩
前言:为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来,如下是base64编码表:
Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输;由于一些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要进行转换;由于某些系统中只能使用ASCII字符,Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,Base64适合在http,mime协议下快速传输数据,如网络中图片以及表情的传输
Base64并非安全领域下的加密解密算法,base64只能算是一个编码算法,对数据内容进行编码来适合传输
Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上形成8位一个字节的形式;如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’
举例如下:
三个字节的原始数据为: aaaabbbb ccccdddd eeeeffff
编码之后会变成数据为:00aaaabb 00bbcccc 00ddddee 00eeffff
算法实现方式:
Jdk的Base64加密解密
package com.example.base64; import java.util.Base64; public class Base { public static void main(String[] args) { String msg = "hello world"; jdkBase64(msg); String msg1 = "你好,王帅帅"; commonsBase64(msg1); } /*Jdk加密解密*/ public static void jdkBase64(String msg){ /*加密*/ byte[] bytes = msg.getBytes(); String encoded = Base64.getEncoder().encodeToString(bytes); System.out.println("加密:"+encoded ); /*解密*/ byte[] decoded = Base64.getDecoder().decode(encoded); String decodeStr = new String(decoded); System.out.println("解密:"+decodeStr); } /*commonsCodes的base64加密解密*/ public static void commonsBase64(String msg){ /*加密*/ byte[] encode = org.apache.commons.codec.binary.Base64.encodeBase64(msg.getBytes()); String encodeStr = new String(encode); System.out.println("加密:"+encodeStr); /*解密*/ byte[] decode = org.apache.commons.codec.binary.Base64.decodeBase64(encodeStr.getBytes()); String decodeStr = new String(decode); System.out.println("解密:"+decodeStr); } }
附:commonsCodes的base64加密解密方式依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
结语:以上就是针对于Base64加密解密的方式,当然不限于以上两种,同时给博友提供一个在线直接转换工具https://base64.supfree.net/欢迎博友留言提问…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。