阅读模式:

base64编码原理

查看:1348  回复: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安装yaf扩展   阅读:8941javascript对cookie操作详细代码函数   阅读:5614nginx编译安装后对nginx进行平滑升级   阅读:7085mysql 为什么添加索引可以提高访问速度   阅读:6380面试的时候回去等通知,等电话的真实意思   阅读:24744一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:133014php 生成图片,给图片加水印   阅读:6742nginx编译安装后对nginx进行平滑升级   阅读:7085centos 7 开启网络   阅读:7476HTTP 1.1 协议详解   阅读:13173phpexcel 超简单从excel表格一键导入数据到数据库教程   阅读:12657centos 7 添加 redis 3.2.9 开机启动脚本   阅读:9903centos 7 安装 nginx-1.11.10   阅读:8958phpexcel 超简单从数据库一键导出数据到excel教程   阅读:7688centos7.3安装mongodb3.6   阅读:8009php 获取当前前后年、月、星期、日、时分秒的时间   阅读:7134crontab+shell脚本实现定时备份mysql数据库   阅读:8079一步步带你,如何网站架构   阅读:4490centos 7 安装 mysql-5.7   阅读:7555linux php7安装yaf扩展   阅读:8941封装php redis缓存操作类   阅读:9596移动端js触摸touch详解(附带案例源码)   阅读:17387解决 nginx 413 request entity too large   阅读:4780centos 7 添加 redis 3.2.9 开机启动脚本   阅读:9903php 使用 smtp.php 类在线发送邮件功能   阅读:6101centos 7 安装 php-7.1.3   阅读:20971php+redis实现消息队列   阅读:15572centos 7 安装 mysql-5.7   阅读:7555linux命令中执行php脚本   阅读:8581csv文件一键导入数据到mysql数据库   阅读:7122mysql 为什么添加索引可以提高访问速度   阅读:6380centos 7 安装 redis 3.2.9   阅读:6949php压缩页面的html代码一行显示   阅读:8002把php session 会话保存到redis   阅读:7684mysql5.7主从同步配置   阅读:6573php 统计网页打开耗时和脚本运行内存   阅读:7149php翻转字符串   阅读:3880mongodb设置shell开机启动脚本   阅读:10811centos 7 安装 mysql-5.7   阅读:7555nginx编译安装后对nginx进行平滑升级   阅读:7085给网站添加一键qq登录的功能   阅读:7929php 使用 smtp.php 类在线发送邮件功能   阅读:6101移动端自适应rem原理   阅读:10013最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:11434centos 7 安装 php-7.1.3   阅读:20971比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:5686一步步带你,如何网站架构   阅读:4490把php session 会话保存到redis   阅读:7684给网站添加一键qq登录的功能   阅读:7929php 统计网页打开耗时和脚本运行内存   阅读:7149