base64 自定义码表 实现加密解密

本文介绍了基于base64的加密解密方法,包括如何将byte转换为string,详细阐述了3个byte组成4个byte的过程,以及不足3个byte时的处理方式。此外,还探讨了自定义码表的构建,加密表和解密表之间的关系,并讲解了如何实现一套带有自定义码表和移位操作的简易Base64系统。
摘要由CSDN通过智能技术生成

简介:

base64 是在加密过程对byte转换为string的一个过程,解密过程则是对string转换为byte的过程。

算法:

byte转换:

1、将原byte 由3个,3个分成一组, 不足3个的为一组
2、将3个byte,一次统一右移两位,然后高位补两个0 , 剩下的补上前一个字节移出来的字符(2个 4个或者6个bit)。这样3个byte一组会统一转成4个byte一组。
3、不足3个的一组 出来的 在4个byte中以‘=’的byte值填充。

4个一组的byte 到 string的转换:

1、构造码表(加密表与解密表)
2、加密表构造原则:加密表的长度是64,加密表的值(ascii码值)是解密表的索引
3、解密表构造原则:长度一般为128,解密表的值是加密表的索引
4、根据4个一组(由于前两位为0,所以最大值是 2^6 - 1)的byte值 用加密表得到字母值
5、通过字母值作为索引用解密表 得到4个一组的byte
6、将4个一组的byte 逆变换会 3个一组的byte
7、然后byte再到其他数据结构如(字符串,文件等等)

实现一套简易的带自定义码表和移位操作的base64:

package base64;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.ByteArrayOutputStream;

/**
 * Created by hp on 15-3-29.
 */
public class NewBase64 {
   
    private Logger logger = LoggerFactory.getLogger(NewBase64.class);

    private static final int RANGE = 0xff;
    //自定义码表 可随意变换字母排列顺序,然后会自动生成解密表
    private static final char[] Base64ByteToStr = new char[] {
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',// 0 ~ 9
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值