這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1.base64編碼
package main//這個文法引入了 encoding/base64 包並使用名稱 b64代替預設的 base64。這樣可以節省點空間。import b64 "encoding/base64"import "fmt"func main() { //這是將要編解碼的字串。 data := "abc123!?$*&()'-=@~" //Go 同時支援標準的和 URL 相容的 base64 格式。編碼需要使用 []byte 類型的參數,所以要將字串轉成此類型。 sEnc := b64.StdEncoding.EncodeToString([]byte(data)) fmt.Println(sEnc) //解碼可能會返回錯誤,如果不確定輸入資訊格式是否正確,那麼,你就需要進行錯誤檢查了。 sDec, _ := b64.StdEncoding.DecodeString(sEnc) fmt.Println(string(sDec)) fmt.Println() //使用 URL 相容的 base64 格式進行編解碼。 uEnc := b64.URLEncoding.EncodeToString([]byte(data)) fmt.Println(uEnc) uDec, _ := b64.URLEncoding.DecodeString(uEnc) fmt.Println(string(uDec)) //標準 base64 編碼和 URL 相容 base64 編碼的編碼字串存在稍許不同(尾碼為 + 和 -),但是兩者都可以正確解碼為原始字串。}/*運行結果如下:$ go run base64-encoding.goYWJjMTIzIT8kKiYoKSctPUB+abc123!?$*&()'-=@~YWJjMTIzIT8kKiYoKSctPUB-abc123!?$*&()'-=@~*/
2.sha1加密
package main//Go 在多個 crypto/* 包中實現了一系列散列函數。import "crypto/sha1"import "fmt"func main() { s := "sha1 this string" //產生一個散列值得方式是 sha1.New(),sha1.Write(bytes),然後 sha1.Sum([]byte{})。這裡我們從一個新的散列開始。 h := sha1.New() //寫入要處理的位元組。如果是一個字串,需要使用[]byte(s) 來強制轉換成位元組數組。 h.Write([]byte(s)) //這個用來得到最終的散列值的字元切片。Sum 的參數可以用來都現有的字元切片追加額外的位元組切片:一般不需要要。 bs := h.Sum(nil) //SHA1 值經常以 16 進位輸出,例如在 git commit 中。使用%x 來將散列結果格式化為 16 進位字串。 fmt.Println(s) fmt.Printf("%x\n", bs)}/*運行程式計算散列值並以可讀 16 進位格式輸出。$ go run sha1-hashes.gosha1 this stringcf23df2207d99a74fbe169e3eba035e633b65d94你可以使用和上面相似的方式來計算其他形式的散列值。例如,計算 MD5 散列,引入 crypto/md5 並使用 md5.New()方法。注意,如果你要求輸入密碼學上的安全散列,你需要小心的研究一下雜湊強度。*/