From 99b43d403c1ca779cbbc256f6920173689a0d955 Mon Sep 17 00:00:00 2001 From: Mmx233 Date: Sat, 23 Mar 2024 16:51:53 +0800 Subject: [PATCH] fix: fix srun md5 logic reference to #31 --- pkg/srun/encode.go | 14 +++++++++----- pkg/srun/srun.go | 5 ++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/srun/encode.go b/pkg/srun/encode.go index 11d2eee..c777e5f 100644 --- a/pkg/srun/encode.go +++ b/pkg/srun/encode.go @@ -1,17 +1,21 @@ package srun import ( + "crypto/hmac" "crypto/md5" "crypto/sha1" + "encoding/hex" "fmt" - "io" ) // Md5 编码 -func Md5(content string) string { - w := md5.New() - _, _ = io.WriteString(w, content) - return fmt.Sprintf("%x", w.Sum(nil)) +func Md5(token, password string) (string, error) { + mac := hmac.New(md5.New, []byte(token)) + _, err := mac.Write([]byte(password)) + if err != nil { + return "", err + } + return hex.EncodeToString(mac.Sum(nil)), nil } // Sha1 编码 diff --git a/pkg/srun/srun.go b/pkg/srun/srun.go index fd4df15..d65c82c 100644 --- a/pkg/srun/srun.go +++ b/pkg/srun/srun.go @@ -96,7 +96,10 @@ func (c Srun) DoLogin(clientIP string) error { infoPrefix = fmt.Sprintf("{%s}", c.LoginInfo.Meta.InfoPrefix) } EncryptedInfo := infoPrefix + Base64(XEncode(string(info), tokenStr)) - Md5Str := Md5(tokenStr) + Md5Str, err := Md5(tokenStr, c.LoginInfo.Form.Password) + if err != nil { + return err + } EncryptedMd5 := "{MD5}" + Md5Str EncryptedChkstr := Sha1( tokenStr + c.LoginInfo.Form.Username + tokenStr + Md5Str +