You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解密并验证含二进制载荷的嵌套JWT

解决方案

1. 验证签名并提取二进制载荷

解密得到的parsed是签名后的JWT对象,无需解析JSON声明,直接按以下步骤操作:

// 先验证签名,确保数据完整性
verifiedToken, err := parsed.Verify(verificationKey)
if err != nil {
    return err
}

// 获取原始Base64URL编码的载荷字符串
rawBase64Payload := verifiedToken.RawPayload

// 解码Base64URL格式的载荷,得到二进制字节数组
binaryPayload, err := base64.RawURLEncoding.DecodeString(rawBase64Payload)
if err != nil {
    return err
}
// 此时binaryPayload就是目标二进制数据,比如示例中的{1,2,3,4,5}

2. 核心说明

  • RawPayload直接返回JWT结构中第二部分的原始编码内容,完全适配二进制载荷场景,不需要强制解析为JSON声明。
  • 必须先执行签名验证:只有通过Verify确认签名有效后,提取的载荷才是可信的,避免使用未验证的篡改数据。

示例验证

针对你提供的解密后JWT:

eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleV8wMDIifQ.AQIDBAU.pd5XWuvqkrinyjr2Fm2sgxkG2uxI5pjNRgFVTeYK_881uk1dVZMlWJqkNuzKs053EmIxDB4QpoQ4JwHeKtjShD_Lxyw8hbTbAlezFlsEoWgPKMzpoombEoQW0SxpCJW0PCvqqd6Y7N5m6B_XwP6kPT72MoWKyaVPe1j7O6-Kv1gdyOSmQbWbnzuMzGWp2jnur_8qdIm4gUoNBZeWmG0kbEvLJuIs0qkR-3JSB8ZBQ7S8G4Zw--BtupqhVaF_ZQz7UQhSBMo86rYJiUI3fgDg-dsnB3C8lE7jWshgHRzUCNDA43yiKJQ4as3oa8nBG-F4dpo3ZO5u7grb5hcpkuXYi6dy0F4uFZNKIH3_3yWaoRArvpMIABhyYL1vuEKjNB32p2z3ztmYO5ZDXEI5mSKazd4Lz8WSW5TtUsx2O5WtczSyzJugvbAzShBJxdwS_JzKtOpUOU61fMWrVBqeTIlSp3kJ0AKmsE2GWJ92c8cElW5jWBFnJ64HPi5YS7e1IUgC

调用verifiedToken.RawPayload会得到AQIDBAU,解码后正好是字节数组{1,2,3,4,5},和你的预期一致。

内容的提问来源于stack exchange,提问作者PPGoodMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:32:04