package main // reference: https://golang.org/pkg/crypto/des/ // reference: http://blog.studygolang.com/2013/01/go%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86%E4%B9%8Bdes/ import ( "crypto/cipher" "crypto/des" "encoding/base64" "encoding/json" "fmt" ) // 3DES解密 func TripleDesDecrypt(crypted, key []byte) ([]byte, error) { block, err := des.NewTripleDESCipher(key) if err != nil { return nil, err } // note: IV = key[:8] blockMode := cipher.NewCBCDecrypter(block, key[:8]) origData := make([]byte, len(crypted)) // origData := crypted blockMode.CryptBlocks(origData, crypted) return origData, nil } func main() { data := "a6rzP8ogj4bD2woh7tDBk0gBYtyhgzJhxOrvse0f8hyQUem+V9skOnOp4q+81R5Cs+gPDdUxtGFdITLVUaTjVUOQiGD8scBTWVL71F9BQUNjug28kD7RCV1kDHwJWU5ReiaKPnT0EzaYpzeppvWbPPUxXD30iFwLN0y0DMnQYo0PR8XkyMbgEg==" raw_data, _ := base64.StdEncoding.DecodeString(data) fmt.Println(string(raw_data)) // encrypted_data := string(raw_data) key := []byte("aaaaaaaaaaaaaaaaaaaaaaaa") result, _ := TripleDesDecrypt(raw_data, key) fmt.Println("result:") fmt.Println(string(result)) var f interface{} err := json.Unmarshal(result, &f) if err != nil { fmt.Println("decode json fail") } }