00000001 00000004
?或者简单地使用没有任何空格的0000000100000004
,因为字节总是成对出现?00000001 00000004
?或者简单地使用没有任何空格的0000000100000004
,因为字节总是成对出现?Base64是一种将二进制数据编码为ASCII字符集的方法,几乎所有计算机系统都能识别,以便在传输数据时不会丢失或修改数据本身的内容。
例如,邮件系统无法处理二进制数据,因为它们期望的是ASCII(文本)数据。因此,如果您想传输图像或其他文件,则由于处理数据的方式而导致数据损坏。
注意:base64编码不是加密数据的方法,也不是压缩数据的方法。事实上,经过base64编码的数据比原始数据大1.333倍。它仅仅是一种确保在传输过程中没有数据丢失或更改的方法。
Base64是一种机制,用于在只允许可打印字符的媒介上表示和传输二进制数据。它是“Base编码”中最流行的形式,其他已知使用的形式包括Base16和Base32。
Base64的需求源于需要将二进制内容(如图像、视频或任意二进制内容)附加到电子邮件中。由于SMTP[RFC 5321]只允许在消息中使用7位美国标准信息交换代码(US-ASCII)字符,因此需要使用这些七位US-ASCII字符来表示这些二进制八位字节流...
希望这回答了您的问题。
Base64是传输(实际上是编码,但目的在于传输)任何类型的二进制数据的一种更紧凑的方式。
参见http://en.wikipedia.org/wiki/Base64
“通常规则是选择一个包含在大多数编码子集中且可打印的64个字符的集合。”
这是一个非常通用的目的,常见的需要就是不浪费比必要的空间。
历史上,它基于这样一个事实:存在一个(几乎)所有编码都使用的共同子集,用于将字符存储到字节中,并且很多2^8个可能的字节在简单数据传输期间(例如复制-粘贴-发送电子邮件-接收电子邮件-复制-粘贴序列)会有丢失或转换的风险。
(请将upvote重定向到Brian的评论,我只是让它更完整和清晰)。
在数据传输中,数据可以是文本或非文本(二进制),如图像、视频、文件等。
我们知道,在传输过程中只能发送或接收一串数据(可打印字符),因此我们需要一种方法来编码
像图像、视频、文件这样的非文本数据。
非文本(图像、视频、文件)的二进制和ASCII表示很容易获得。这种非文本(二进制)表示被编码为文本格式,使得每个ASCII字符都使用64个可能的字符集中的一个(A-Z、a-z、0-9、+ 和 /
)。
Table 1: The Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
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 (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
Base64
,将给定数据编码为这个包含六十四个允许字符的字符集就被称为Base64编码
。1
==> MQ==
12
==> MTI=
123
==> MTIz
1234
==> MTIzNA==
12345
==> MTIzNDU=
123456
==> MTIzNDU2
需要注意以下几点:=
填充。
- =
不是base64字符集的一部分。它只用作填充。
因此,可以看出,Base64编码不是加密,而只是一种将任何给定数据转换为可在网络上传输的可打印字符流的方法。