博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录---base64
阅读量:7026 次
发布时间:2019-06-28

本文共 1054 字,大约阅读时间需要 3 分钟。

      什么是Base64呢?

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

       简单的了解了一点有关Base64.

一、编码规则

Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。

例:将对ABC进行BASE64编码:

1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);

2、再取二进制值A(01000001)B(01000010)C(01000011);
3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100)(00001001)(00000011),其中蓝色部分为真实数据;

5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);

6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是

数据在字符表中的索引。

注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

这是昨天晚上群里问了一个面试的问题,就是有关Base64解码的。当时看着一堆乱七八糟的数字字母符号,完全不知道是什么。下来就简单的了解了解!

可以看看这篇文章 

转载地址:http://rioxl.baihongyu.com/

你可能感兴趣的文章
sunspot mongo search 步骤和注意事项
查看>>
iBatis的基本实现
查看>>
Data Guard Physical Standby Setup in Oracle Database 11g Release 2
查看>>
5分钟提高Laravel框架性能10倍以上
查看>>
Redis_安装配置.md
查看>>
Doxygen几个小问题,mark一下
查看>>
日积月累:ScrollView嵌套ListView只显示一行
查看>>
Kotlin Koans 心印
查看>>
jdk jre sdk 之间的区别
查看>>
Storm客户端提交任务失败原因分析
查看>>
HTML5 了解程度
查看>>
进程:fork函数
查看>>
20:1, PHP性能评测Base62x:内置模块 vs. 脚本模块
查看>>
重构,开启系统优化的钥匙
查看>>
go实用小技能(二)-获取当前执行程序的文件名和代码所在行号
查看>>
Java环境变量配置
查看>>
分布式配置管理平台XXL-CONF
查看>>
Redis 分布式锁的正确实现方式( Java 版 )
查看>>
利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM
查看>>
PHP的错误级别
查看>>