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 }