package aitools import ( "encoding/base64" "net/url" "strings" ) const secretPrefix = "ox1." // DecodeSecret 与前端 src/secrets.ts decodeSecret 对齐:ox1. + base64(utf8)。 // Logan.Li func DecodeSecret(stored string) string { if stored == "" { return "" } if !strings.HasPrefix(stored, secretPrefix) { return stored } raw, err := base64.StdEncoding.DecodeString(stored[len(secretPrefix):]) if err != nil { return stored } // 前端 encodeURIComponent 再 btoa;解码侧 escape/atob/decodeURIComponent。 // Go 侧:先按 latin1 字节还原,再尝试 URL unescape。 s := string(raw) if u, err := url.QueryUnescape(s); err == nil { return u } return s }