为什么我的hmac键关闭了?

时间:2017-12-13 04:33:36

标签: go

我正在尝试生成一个用于图像代理的hmac密钥。我有:

https://play.golang.org/p/fec_N2Nim4

package main

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

func main() {
    mac := hmac.New(sha256.New, []byte("secret key"))
        mac.Write([]byte("https://octodex.github.com/images/codercat.jpg"))
        want := mac.Sum(nil)
        fmt.Println("result: ",base64.URLEncoding.EncodeToString(want)) // expect "sXyMwWKIC5JPCtlYOQ2f4yMBTqpjtUsfI67Sp7huXIYY="
}

这是基于the package's推荐的公式,用于生成密钥以及我尝试过的其他方法,这些方法都产生相同的密钥。但是,示例中给出的url在前面有一个“s”:

http://localhost:8080/500,sXyMwWKIC5JPCtlYOQ2f4yMBTqpjtUsfI67Sp7huXIYY=/https://octodex.github.com/images/codercat.jpg

vs我得到的:

http://localhost:8080/500,XyMwWKIC5JPCtlYOQ2f4yMBTqpjtUsfI67Sp7huXIYY=/https://octodex.github.com/images/codercat.jpg

1 个答案:

答案 0 :(得分:1)

根据给定库的文档,密钥格式如下:

s{signature}

请查看Url signing signature

上的文档