这个算法是针对之前 PHP 加密算法(可逆) 中的算法得来的,是使用 Go 语言去解密 PHP 加密的内容。
package main import ( "crypto/md5" "encoding/base64" "encoding/json" "errors" "fmt" "io" "log" ) func main() { token := "token======"; data, err := Decrypt(token, "key=====") log.Println(data, err) } func Md5(key string) string { h := md5.New() io.WriteString(h, key) key = fmt.Sprintf("%x", h.Sum(nil)) return key } func Base64Decode(str string) string { data, _ := base64.StdEncoding.DecodeString(str) return string(data) } func Decrypt(data string, key string) (map[string]interface{}, error) { key = Md5(key) var ( char = "" str = "" x = 0 l = len(key) ) data = Base64Decode(data) lenths := len(data) for i := 0; i < lenths; i++ { if x == l { x = 0 } char = char + fmt.Sprintf("%s", key[x:x+1]) x++ } for i := 0; i < lenths; i++ { if data[i : i+1][0] < char[i : i+1][0] { str = str + string(char[i : i+1][0]-data[i : i+1][0]) } else { str = str + string((data[i : i+1][0])-(char[i : i+1][0])) } } var newData map[string]interface{} if err := json.Unmarshal([]byte(str), &newData); err != nil { log.Println("数据错误") return newData, errors.New("数据错误") } return newData, nil }