Golang Go语言中 有大神用过 jwt-go 么,我用 rsa256 签名好像不对,以前没用过,求助

发布于 1周前 作者 zlyuanteng 来自 Go语言

按照网上的教程,我试了一下 jwt-go 用 rsa256 算法签名,总报错,说调用 SignedString ()时总会出错,说“ key is invalid ”。。。 代码如下: package main

import (
jwt "github.com/dgrijalva/jwt-go"
"log"
"io/ioutil"

)

func main(){ privKeyPath := “/Users/zhangzhen11/gocode/src/jwt/keys/app.rsa” //pubKeyPath := “keys/app.rsa.pub” var err error var ( signKey []byte //verifyKey []byte ) signKey, err = ioutil.ReadFile(privKeyPath) if err !=nil{ log.Printf(“readfile:%v\n”, err) return } claims := &jwt.StandardClaims{ Issuer: “test”, ExpiresAt: 15000, } t := jwt.NewWithClaims(jwt.SigningMethodRS256, claims) token , err := t.SignedString(signKey) if err != nil{ log.Printf(“sign:%v\n”, err) return } log.Printf("%v\n", token) }

输出结果: 2017/08/01 11:40:44 sign:key is invalid

key 应该是没问题的 我可以打印出来 key 的值,是我哪个 api 用错了么


Golang Go语言中 有大神用过 jwt-go 么,我用 rsa256 签名好像不对,以前没用过,求助

更多关于Golang Go语言中 有大神用过 jwt-go 么,我用 rsa256 签名好像不对,以前没用过,求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

附 openssl genrsa -out app.rsa 1024

更多关于Golang Go语言中 有大神用过 jwt-go 么,我用 rsa256 签名好像不对,以前没用过,求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你的 signKey 获取的有问题,应该这样
go<br>signBytes, err := ioutil.ReadFile(privKeyPath)<br>signKey, err = jwt.ParseRSAPrivateKeyFromPEM(signBytes)<br>

在Go语言中使用jwt-go库进行RSA256签名时,如果遇到问题,可以参考以下建议进行排查和解决:

  1. 确保依赖正确:首先,确保你使用的jwt-go库是最新版本,或者至少是一个稳定版本。由于jwt-go原仓库已归档,建议使用新维护的库,如github.com/golang-jwt/jwt,并在go.mod文件中指定正确的版本号。
  2. 检查密钥对:确认你使用的私钥和公钥是正确配对的,并且私钥是用于签名,公钥是用于验证。生成密钥对时,可以使用openssl等工具。
  3. 验证签名算法:在生成和解析JWT时,确保使用的签名算法是RSA256。在解析JWT时,还需要检查Token的Header中的"alg"字段,确保它与你期望的签名方法匹配。
  4. 检查签名过程:确认签名过程中没有遗漏或错误的步骤。例如,签名内容需要正确格式化,私钥需要正确解析等。
  5. 参考示例代码:查看jwt-go库的官方示例代码或社区提供的示例代码,以确保你的实现方式是正确的。

如果以上步骤都无法解决问题,建议详细检查错误信息,或者在jwt-go的社区论坛、GitHub等平台上寻求帮助。

回到顶部