Base64编码
概述
Base64编码,是我们程序开发中经常使用到的编码方法。因为base64编码的字符串,更适合不同平台、不同语言的传输(一个字符可能其他的系统没有)。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法,一句:将二进制数据文本化(转成ASCII)。
– 由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
– 对二进制文件进行文本化后的传输
– 前后台交互时,经常使用base64,这样可以避免特殊字符传输错误
Linux下使用命令测试步骤:
1. cp /bin/ls . 2. base64 ls > 1.txt 3. 查看1.txt =》 可读的文本数据 4. base64 -D 1.txt > myls ==> 将文本数据解码为原来的ls数据, -D decode 5. ls -al 1.txt ./ls ./myls ===== duke ~$ ls -al 1.txt ./ls ./myls -rwxr-xr-x 1 duke staff 38704 3 6 14:49 ./ls -rwxr-xr-x 1 duke staff 38704 3 6 14:49 ./myls -rw-r--r-- 1 duke staff 51609 3 6 14:49 1.txt ===== 6. chmod +x myls => 添加执行权限 7. ./myls ==》 与ls功能相同
字符集
普通的base64字符集 A-Z : 26 a-z : 26 0-9: 10 +, / : 2 64个
URL专用的base64字符集 A-Z : 26 a-z : 26 0-9: 10 -,_ : 2 64个
编码规则
MAn => 3 * 8 = 24 / 6 = 4 M => 77 = 64 + 8 + 4 + 1 => 0100, 1101 Base64编码的数据比原来的字节数大。 由3字节 => 4字节 man =>twfu 当需要编码的数据不足时,使用等号(=)填充,解码时,会自动剔除
– base64就是一种基于64个可打印字符来表示二进制数据的方法。
– 编码后便于传输,尤其是不可见字符或特殊字符,对端接收后解码即可复原。
– base64只是编码,并不具有加密作用。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
ASCII编码
go代码测试base64
package main import ( "fmt" "encoding/base64" ) func main() { fmt.Printf("标准base64编码...\n") //info := []byte("国足宇宙第一!!!") info := []byte("https://studygolang.com/pkgdoc&hell?/?=") encodeInfo := base64.StdEncoding.EncodeToString(info) fmt.Printf("encode info 1 : %s\n", encodeInfo) fmt.Printf("URL base64编码...\n") urlEncodeInfo := base64.URLEncoding.EncodeToString(info) fmt.Printf("url encode info : %s\n", urlEncodeInfo) }
标准base64编码... encode info 1 : aHR0cHM6Ly9zdHVkeWdvbGFuZy5jb20vcGtnZG9jJmhlbGw/Lz89 URL base64编码... url encode info : aHR0cHM6Ly9zdHVkeWdvbGFuZy5jb20vcGtnZG9jJmhlbGw_Lz89