gpt4 book ai didi

go - "undefined: hmac.Equal"错误,而 hmac.New 在这之前的行中工作正常

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:27 25 4
gpt4 key购买 nike

我正在用 go 开发一个网络服务器,
在顶部我有

import ("net/http"
"log"
"fmt"
"encoding/json"
"encoding/hex"
"time"
"math/rand"
"crypto/sha256"
"crypto/hmac"
"strconv"
"strings"
"github.com/crowdmob/goamz/aws"
"github.com/crowdmob/goamz/dynamodb"
)

后来我有

func singSomething(someid string) string {
mac := hmac.New(sha256.New, key)
mac.Write([]byte(id))
b := mac.Sum(nil)
return hex.EncodeToString(b)
}

func validateSignature(id, signature string) bool {
mac := hmac.New(sha256.New, key)
mac.Write([]byte(id))
expectedMAC := mac.Sum(nil)
signatureMAC, err := hex.DecodeString(signature)
if err != nil {
fmt.Println("PROBLEM IN DECODING HUH!")
return false
}
return hmac.Equal(expectedMAC,signatureMAC)

当我发出 go run CSServer
时出现此错误 /CSServer.go:54: 未定义:hmac.Equal

为什么?到底是怎么回事?为什么 hmac.New 可以,但 hmac.Equals 不行?

最佳答案

询问时请发布最少但完整的程序。没有它,我唯一能提供的就是一个编译没有问题的例子,即。未定义的 hmac.Equal 没有演示。您未显示的代码中的其他地方一定存在问题。

package main

import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
)

func singSomething(someid string) string {
mac := hmac.New(sha256.New, []byte{})
mac.Write([]byte(someid))
b := mac.Sum(nil)
return hex.EncodeToString(b)
}

func validateSignature(id, signature string) bool {
mac := hmac.New(sha256.New, []byte{})
mac.Write([]byte(id))
expectedMAC := mac.Sum(nil)
signatureMAC, err := hex.DecodeString(signature)
if err != nil {
fmt.Println("PROBLEM IN DECODING HUH!")
return false
}
return hmac.Equal(expectedMAC, signatureMAC)
}

func main() {}

Playground

关于go - "undefined: hmac.Equal"错误,而 hmac.New 在这之前的行中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com