go中使用base64编码解码

package main

import (
	"bytes"
	"crypto/aes"
	"crypto/cipher"
	"encoding/base64"
	"fmt"
)

var key = []byte("1234567890abcdef")

func padding(src []byte, blocksize int) []byte {
	padnum := blocksize - len(src)%blocksize
	pad := bytes.Repeat([]byte{byte(padnum)}, padnum)
	return append(src, pad...)
}

func unpadding(src []byte) []byte {
	n := len(src)
	unpadnum := int(src[n-1])
	return src[:n-unpadnum]
}

func encryptAES(src []byte) []byte {
	block, _ := aes.NewCipher(key)
	src = padding(src, block.BlockSize())
	blockmode := cipher.NewCBCEncrypter(block, key)
	blockmode.CryptBlocks(src, src)
	return src
}

func decryptAES(src []byte) []byte {
	block, _ := aes.NewCipher(key)
	blockmode := cipher.NewCBCDecrypter(block, key)
	blockmode.CryptBlocks(src, src)
	src = unpadding(src)
	return src
}

func main() {
	x := []byte("武汉加油")
	x1 := encryptAES(x)
	x2 := decryptAES(x1)
	fmt.Println(string(x2))

	// base64编码
	x3 := base64.StdEncoding.EncodeToString(x2)
	fmt.Println(x3)

	// base64解码
	x4, _ := base64.StdEncoding.DecodeString(x3)
	fmt.Println(string(x4))
}

  

原文地址:https://www.cnblogs.com/nihaorz/p/14265826.html