base64 编码原理和实现方法

base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,base64 就是一种基于64个可打印字符来表示二进制数据的方法。

base64 编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

golang 中 base64 的编码和解码可以用内置库 encoding/base64。

 

示例如下:

package main
import (
	"encoding/base64"
	"fmt"
	"log"
)

func main() {
	input := []byte("hello world")
	fmt.Println("原始内容:" + string(input))

	// 演示base64编码
	encodeString := base64.StdEncoding.EncodeToString(input)
	fmt.Println("编码:" + encodeString)

	// 对上面的编码结果进行base64解码
	decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Println("解码:" + string(decodeBytes))

	// 如果要用在url中,需要使用 URLEncoding
	uEnc := base64.URLEncoding.EncodeToString([]byte(input))
	fmt.Println("url编码:" + uEnc)

	uDec, err := base64.URLEncoding.DecodeString(uEnc)
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Println("url解码:" + string(uDec))
}

运行结果如下:

原始内容:hello world
编码:aGVsbG8gd29ybGQ=
解码:hello world
url编码:aGVsbG8gd29ybGQ=
url解码:hello world

Hash(哈希或散列)算法是非常基础和重要的计算机算法,它能将任意长度的二进制明文映射为较短的固定长度的二进制Hash值,并且不同的明文很难映射为相同的Hash值。SHA-256 是一种 Hash 算法,在比特币源 ...