牛骨文教育服务平台(让学习变的简单)
博文笔记

base64 加密方式详解

创建时间:2016-11-24 投稿人: 浏览次数:1954
  • base64编码表
    图片来源于网络

  • 命名
    base64是用于传输8Bit字节代码,由上图的编码表可以知道,编码后的内容只包含这64个字符类型,所以称为base64编码(不足四个字符的时候会用 ‘=’ 来补足,下面会说明)。

  • 编码过程
    1. 首先将待编码的内容转换成8位二进制,每3个字符为一组;
    2. 如果编码前的长度是3n+1,编码后的内容最后面补上2个 ‘=’,如果编码前的长度是3n+2,编码后的内容最后面补上1个 ‘=’。
    3. 再将每一组的二进制内容拆分成6位的二进制,不足6位的后面补足0;
    4. 每个6进制的数字前面补足0,保证变成8位二进制;
    5. 将补足后的内容根据base64编码表转换成base64内容输出;

  • 举例说明
加密步骤 加密过程
1、编码前 hb
2、根据ascii码转换成8位二进制,3个为一组 01101000 | 01100010
3、编码前长度是3n+2,所以后面补1个 ‘=’ 01101000 | 01100010 | =
4、拆分成6位二进制,不足6位的在后面补足0,0010补足变成001000 011010 | 000110 | 001000 | =
5、每个6进制的数字前面补足0,补到8位二进制为止 00011010 | 00000110 | 00000010 | =
6、换算成十进制根据base64编码表输出加密后的内容 aGI=

由此可以看出,本来是3个8位二进制的长度,编码后变成4个8位二进制长度,所以base64的编码方式编码后的长度大约比编码前大了1/3。

java JDK在1.8版本里加入了base64的代码,有兴趣可以阅读java.util.Base64


Tools

[ base64在线加密解密 ]

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。