package tools import ( "crypto/aes" "encoding/hex" "encoding/json" ) var ( TokenKey = "z1eRU{fq*VtfLAszrz" //nolint ) func SetToken(token string) { TokenKey = token } type StateToken struct { PenaID string `json:"pena_id"` Service string `json:"service"` // yandex, google, etc RedirectURL string `json:"redirect_url"` } func EncryptTokenAES(data any) (string, error) { cipher, err := aes.NewCipher([]byte(TokenKey)) if err != nil { return "", err } msg, err := json.Marshal(data) if err != nil { return "", err } encrypted := make([]byte, len(msg)) cipher.Encrypt(encrypted, msg) return hex.EncodeToString(encrypted), nil } func DecryptTokenAES(data string, result any) error { cipher, err := aes.NewCipher([]byte(TokenKey)) if err != nil { return err } msg, err := hex.DecodeString(data) if err != nil { return err } decrypted := make([]byte, len(msg)) cipher.Decrypt(decrypted, msg) err = json.Unmarshal(decrypted, &result) if err != nil { return err } return nil }