69 lines
1.6 KiB
Go
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
|
|
}
|