首页 文章

(Golang)JWT签名验证问题

提问于
浏览
2

我'm trying to get my head around JWT tokens in Golang. I' m使用github.com/dgrijalva/jwt-go .

让我措手不及的是我可以输入多个有效签名 .

例如,转到http://jwt.io - 为秘密输入MySuperSecretKey

此令牌有效:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NTc3MzAyODMsInVzZXIiOiJ1c2VyMSJ9.SxshVL42DUH9e7jXUblbB_bTwKxhe4jo70DrvbQMlaU

以及这一个:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NTc3MzAyODMsInVzZXIiOiJ1c2VyMSJ9.SxshVL42DUH9e7jXUblbB_bTwKxhe4jo70DrvbQMlaV

事实上,如果我将最后一个字母更改为V,W或X,我会收到“Signature Verfied”消息 .

谁能告诉我这里发生了什么?

1 回答

  • 5

    它是签名的Base64编码,可以将最后一个字母更改为某些目标,而不会影响相关位 .

    尝试将两个签名弹出到base64->十六进制解码器中,您将获得相同的结果 . 实际上在https://conv.darkbyte.ru/,两个签名都被重新评估为base64 SxshVL42DUH9e7jXUblbBbTwKxhe4jo70DrvbQMlaQ ==

相关问题