阅读模式:

base64编码原理

查看:583  回复: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编码解码工具

分享到:
0 0

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

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
nginx编译安装后对nginx进行平滑升级   阅读:6097给php7安装redis扩展库   阅读:7935mongodb设置shell开机启动脚本   阅读:9481php 生成图片,给图片加水印   阅读:6080一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:126200linux top命令详解   阅读:8926centos7中颁发CA证书并开启web https   阅读:6761php压缩页面的html代码一行显示   阅读:6972php打印三角形   阅读:8947php连接redis   阅读:5416php打印三角形   阅读:8947linux top命令详解   阅读:8926javascript点击复制内容   阅读:6439小米手机端商城rem适配原理   阅读:6464php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:7983php打印九九加法表   阅读:9648centos7开启交换内存   阅读:10410爱编程,也爱健康   阅读:4022面试的时候和你谈理想,是理想or入坑?   阅读:9820mysql 为什么添加索引可以提高访问速度   阅读:5727centos 7 安装 mysql-5.7   阅读:6612php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:7983php设置cookie为HttpOnly防止XSS攻击   阅读:12177mysql5.7开启sql日志的配置   阅读:8590给php7安装redis扩展库   阅读:7935浅谈javascript的函数节流   阅读:4410centos 7 安装 php-7.1.3   阅读:19219php翻转字符串   阅读:3256centos 7 安装 redis 3.2.9   阅读:6327移动端自适应rem原理   阅读:9365centos 7 添加 redis 3.2.9 开机启动脚本   阅读:9041php 读取和设置redis的键值   阅读:6980web项目高并发量网站解决方案   阅读:4373linux教程,鸟哥私房菜(pdf全集)   阅读:9376知乎百万赞作者告诉你:年薪百万的人都在靠什么赚钱   阅读:6066linux教程,鸟哥私房菜(pdf全集)   阅读:9376mysql5.7主从同步配置   阅读:4893linux top命令详解   阅读:8926十张GIF让你弄懂递归等概念   阅读:5775mysql5.7主从同步中binlog同步模式详解   阅读:6386php 统计网页打开耗时和脚本运行内存   阅读:6486centos7开启交换内存   阅读:10410霍金24岁博士毕业论文在线预览   阅读:5330phpexcel 超简单从excel表格一键导入数据到数据库教程   阅读:11812一步步带你,如何网站架构   阅读:3869TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:3073centos 7 修改系统屏幕分辨率   阅读:42998关于PHP程序员技术职业生涯规划   阅读:2594nginx安装redis模块   阅读:4861centos 7搭建zabbix3.4   阅读:6099