ecs/platform/taptap/util.go
2025-06-04 18:17:39 +08:00

69 lines
1.6 KiB
Go

package taptap
import (
"crypto/hmac"
"crypto/sha1"
"encoding/base64"
"fmt"
"strconv"
"strings"
)
func hmacSha1(src, key string) string {
var mac = hmac.New(sha1.New, []byte(key))
mac.Write([]byte(src))
return base64.StdEncoding.EncodeToString(mac.Sum(nil))
}
func calcMac(accessToken, macKey, nonce string, now int64) string {
var timestamp = strconv.FormatInt(now, 10)
var path = apiAccountProfile + "?client_id=" + clientId
var mac = hmacSha1(timestamp+"\n"+nonce+"\n"+"GET"+"\n"+path+"\n"+apiHost+"\n"+"443"+"\n\n", macKey)
return "MAC id=" + "\"" + accessToken + "\"" + "," + "ts=" + "\"" + timestamp + "\"" + "," + "nonce=" + "\"" + nonce + "\"" + "," + "mac=" + "\"" + mac + "\""
}
func QuickEncryptData(codeData string) string {
dataArr := []rune(codeData)
keyArr := []byte(quickCallbackKey)
keyLen := len(keyArr)
var tmpList []int
for index, value := range dataArr {
base := int(value)
dataString := base + int(0xFF&keyArr[index%keyLen])
tmpList = append(tmpList, dataString)
}
var str string
for _, value := range tmpList {
str += "@" + fmt.Sprintf("%d", value)
}
return str
}
func QuickDecryptData(ntData string) string {
strLen := len(ntData)
newData := []rune(ntData)
resultData := string(newData[1:strLen])
dataArr := strings.Split(resultData, "@")
keyArr := []byte(quickCallbackKey)
keyLen := len(keyArr)
var tmpList []int
for index, value := range dataArr {
base, _ := strconv.Atoi(value)
dataString := base - int(0xFF&keyArr[index%keyLen])
tmpList = append(tmpList, dataString)
}
var str string
for _, val := range tmpList {
str += string(rune(val))
}
return str
}