阅读模式:

base64编码原理

查看:2286  回复:0  类型:  来源:php自学网  标签 base64

        base64编码是把字符串转为二进制后按照一定的分组、补位、十进制转换后,对照base64编码表而生成的编码算法。base64编码是可逆的,可以逆向解码生成明文。base64编码起初是为了解决电子邮件中不能直接使用非ASCII码字符的规定问题。base64编码常用于电子邮件加密、数据加密、base64规避反垃圾邮件和图片、文件的网络传输。

一、base64编码原理流程图

php-base64.png

二、base64编码表

索引

对应字符

索引

对应字符

索引

对应字符

索引

对应字符

0

A

17

R

34

i

51

z

1

B

18

S

35

j

52

0

2

C

19

T

36

k

53

1

3

D

20

U

37

l

54

2

4

E

21

V

38

m

55

3

5

F

22

W

39

n

56

4

6

G

23

X

40

o

57

5

7

H

24

Y

41

p

58

6

8

I

25

Z

42

q

59

7

9

J

26

a

43

r

60

8

10

K

27

b

44

s

61

9

11

L

28

c

45

t

62

+

12

M

29

d

46

u

63

/

13

N

30

e

47

v



14

O

31

f

48

w



15

P

32

g

49

x



16

Q

33

h

50

y



三、base64编码举例

字符串:"zixuephp.net"

    1.把字符串每3个字符为一组,取其ascii编码,如果是中文取其unicode utf-8 16进制编码。(ascii编码对照表

zix           uep            hp.           net
--------------------------------------------------------  //每3个字符为1组,这里4组
122 105 120   117 101 112    104 112 46    110 101 116

    2.把ascii编码的10进制值转换成8位二进制,不足8位前面补0。

122      105       120         117      101     112         104     112       46         110      101      116
----------------------------------------------------------------------------------------------------------------------
01111010 01101001  01111000    01110101 01100101 01110000    01101000 01110000 00101110    01101110 01100101 01110100

    3.把二进制以每6位为一组组成新数据,并转换成10进制。如果没有6位,小于3位以0代替,如果有剩下的空组,以"="代替结果。

01111010 01101001  01111000    01110101 01100101 01110000    01101000 01110000 00101110    01101110 01100101 01110100
---------------------------------------------------------------------------------------------------------------------//6位新分组
011110 100110 100101 111000 011101 010110 010101 110000 011010 000111 000000 101110 011011 100110 010101 110100
---------------------------------------------------------------------------------------------------------------------//2转10进制
30     38     37     56     29     22     21     48     26     7      0      46     27     38     21     52

    4.对应base64编码对照表获取对应字符

30     38     37     56     29     22     21     48     26     7      0      46     27     38     21     52
------------------------------------------------------------------------------------------------------------
e      m      l      4      d      W      V      w      a      H      A      u      b      m      V      0

最后base64字符串为:

eml4dWVwaHAubmV0

<?php
echo base64_encode('zixuephp.net');
//eml4dWVwaHAubmV0

四、其他举例

    1.字符串;"ABCD",每3个字符为一组,少两组末尾补“==“,每6位一新组时不够3位补0,对应值A。如图:

base64编码图

    2.中文的base64编码,字符串:“自学网”,

        字符串先转16进制为:

e887aa  e5ada6  e7bd91

        最后按照上面步骤转换成二进制->6位分新组->转10进制->base64对照表->输出base64编码。

//base64编码结果
6Ieq5a2m572R

测试工具:

字符串转16进制工具

进制互转工具

base64编码解码工具

分享到:
1 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
linux php7编译安装mongodb扩展   阅读:10721最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:35622php连接redis   阅读:7011mysql数据库性能的基本优化   阅读:5604mysql5.7主从同步配置   阅读:8773一步步带你,如何网站架构   阅读:5500TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:5361Nginx 配置文件详解   阅读:6695ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:11587phpexcel 超简单从数据库一键导出数据到excel教程   阅读:8960shell脚本批量删除几天前的文件   阅读:12670php连接redis   阅读:7011php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:10473centos 7 安装 samba 服务   阅读:8345php打印九九乘法表   阅读:13682nginx编译安装后对nginx进行平滑升级   阅读:8347php打印九九加法表   阅读:13431phpexcel 超简单从excel表格一键导入数据到数据库教程   阅读:14059最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:12750php删除一个文件夹内的所有文件夹和文件   阅读:6308网站局部小图片优化-base64编码图片   阅读:23270php冒泡排序法   阅读:16640人性漫画:打工与创业的残酷区别   阅读:6394php 使用 smtp.php 类在线发送邮件功能   阅读:7188mysql5.7主从同步配置   阅读:8773phpexcel 超简单从数据库一键导出数据到excel教程   阅读:8960爱编程,也爱健康   阅读:5700给网站添加一键新浪微博登录的功能   阅读:7802TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:5361给php7安装redis扩展库   阅读:9968企业让你去面试,可能不是真的招人   阅读:7376shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:10992php生成二维码   阅读:8521php生成二维码   阅读:8521mysql数据一键导出到csv文件   阅读:7214霍金24岁博士毕业论文在线预览   阅读:7024PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:17348php连接redis   阅读:7011linux php7安装yaf扩展   阅读:10364centos 7 安装 mysql-5.7   阅读:9801centos7开启交换内存   阅读:13146shell脚本统计当前服务器并发连接数   阅读:9449浅谈javascript的函数节流   阅读:6033给网站添加一键qq登录的功能   阅读:9234小米手机端商城rem适配原理   阅读:8289php打印三角形   阅读:14005给php7安装redis扩展库   阅读:9968php打印九九加法表   阅读:13431Mysql在大型网站的应用架构演变   阅读:5843javascript对cookie操作详细代码函数   阅读:6592