golang zip aes base64
package main
import (
"bytes"
"compress/gzip"
"encoding/base64"
"fmt"
)
func main() {
var b bytes.Buffer
w := gzip.NewWriter(&b)
defer w.Close()
src := "hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world"
w.Write([]byte(src))
w.Write([]byte(src))
w.Write([]byte(src))
w.Write([]byte(src))
w.Flush()
fmt.Printf("size1:%d size2:%d size3:%d
", len([]byte(src)), len(b.Bytes()), b.Len())
sEnc := base64.StdEncoding.EncodeToString(b.Bytes())
fmt.Printf("enc=[%s]
", sEnc)
}
2、aes
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"fmt"
)
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, key []byte) []byte {
block, _ := aes.NewCipher(key)
src = padding(src, block.BlockSize())
blockmode := cipher.NewCBCEncrypter(block, key)
dst := make([]byte, len(src))
blockmode.CryptBlocks(dst, src)
return dst
}
func decryptAES(src []byte, key []byte) []byte {
block, _ := aes.NewCipher(key)
blockmode := cipher.NewCBCDecrypter(block, key)
blockmode.CryptBlocks(src, src)
src = unpadding(src)
return src
}
func main() {
x := []byte(" ")
key := []byte("hgfedcba87654321") //16*8=128 , AES128
x1 := encryptAES(x, key)
x2 := decryptAES(x1, key)
fmt.Print(string(x2))
}
3、base64
package main
import (
"encoding/base64"
"fmt"
"os"
"reflect"
"strings"
)
func main4() {
s := "Hello World!"
b := []byte(s)
sEnc := base64.StdEncoding.EncodeToString(b)
fmt.Printf("enc=[%s]
", sEnc)
sDec, err := base64.StdEncoding.DecodeString(sEnc)
if err != nil {
fmt.Printf("base64 decode failure, error=[%v]
", err)
} else {
fmt.Printf("dec=[%s]
", sDec)
}
}
func main3(){
src := []byte("this is a test string.")
encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout)
encoder.Write(src)
encoder.Close()
}
func main2(){
src := []byte("this is a test string.")
encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout)
encoder.Write(src)
encoder.Close()
}
func main1() {
src := "dGhpcyBpcyBhIHRlc3Qgc3RyaW5nLg=="
reader := strings.NewReader(src)
decoder := base64.NewDecoder(base64.StdEncoding, reader)
buf := make([]byte, 10)
fmt.Printf("%T-----%T=======%s
", buf, decoder, reflect.TypeOf(buf))
dst := ""
for{
n,err := decoder.Read(buf)
if n==0{
println("n=0")
break
}
if err != nil{
println("err != nil")
break
}
dst += string(buf[:n])
println(dst)
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
요구사항 정의요구사항 정의 작성 방법 개요 ・목적 표시되고 있는 텍스트를 가변으로 한다 · 과제 표시된 텍스트가 변경되지 않음 ・해결 표시되고 있는 텍스트가 가변이 된다 사양 · 표시 정의 각 편집 화면 ○○ 표시되고 있는 텍스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.