阅读模式:

base64编码原理

查看:920  回复: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

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

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
centos7中颁发CA证书并开启web https   阅读:7471给网站添加一键qq登录的功能   阅读:7351mysql数据库性能的基本优化   阅读:4449TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:3466centos 7搭建zabbix3.4   阅读:6398什么是天使轮?什么是A轮融资?B轮融资?   阅读:4891给 centos 7 安装桌面环境   阅读:16758纯干货,程序员面试的超实用技巧   阅读:4197网站性能优化-页面静态缓存   阅读:5374比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:5298web性能测试工具ab的测试方法   阅读:4516centos 7 安装 nginx-1.11.10   阅读:8355shell脚本批量删除几天前的文件   阅读:9829给网站添加一键新浪微博登录的功能   阅读:6406给网站添加一键qq登录的功能   阅读:7351centos 7 忘记root密码   阅读:4720nginx安装redis模块   阅读:5337面试的时候回去等通知,等电话的真实意思   阅读:23853Nginx 配置文件详解   阅读:4606shell发送邮件脚本   阅读:7769php 使用 smtp.php 类在线发送邮件功能   阅读:5665给网站添加一键qq登录的功能   阅读:7351移动端js触摸touch详解(附带案例源码)   阅读:16543php连接redis   阅读:5571用php从1加到100的值   阅读:8532小米手机端商城rem适配原理   阅读:6630用php从1加到100的值   阅读:8532phpexcel 超简单从excel表格一键导入数据到数据库教程   阅读:12138HTTP 1.1 协议详解   阅读:11594centos 7搭建zabbix3.4   阅读:6398php压缩页面的html代码一行显示   阅读:7301php设置cookie为HttpOnly防止XSS攻击   阅读:12588php文件下载防盗链   阅读:9711centos 7搭建zabbix3.4   阅读:6398给网站添加一键新浪微博登录的功能   阅读:6406用php从1加到100的值   阅读:8532浅谈javascript的函数节流   阅读:4559linux php7编译安装mongodb扩展   阅读:8735Mysql在大型网站的应用架构演变   阅读:4559php压缩页面的html代码一行显示   阅读:7301移动端自适应rem原理   阅读:9576javascript对cookie操作详细代码函数   阅读:5199centos7中颁发CA证书并开启web https   阅读:7471一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:128916mysql共享锁和排他锁详解   阅读:7233html5 离线缓存的使用   阅读:4285php打印九九加法表   阅读:10178centos 7 安装 samba 服务   阅读:6661php删除一个文件夹内的所有文件夹和文件   阅读:4691shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:8859