当前位置:  开发笔记 > 编程语言 > 正文

为什么JSON Web令牌(JWT)解密而不知道密钥

如何解决《为什么JSONWeb令牌(JWT)解密而不知道密钥》经验,为你挑选了1个好方法。

我正在使用JWT.要加密令牌,我在Java中使用HS512签名算法和base64EncodedSecretKey.获得令牌后,我能够在不知道密钥的情况下解密令牌.这怎么可能?我的令牌有什么问题吗?

String JWT = Jwts.builder()
  .signWith(SignatureAlgorithm.HS512, SECRET)
  .setSubject(username)
  .setExpiration(new Date(System.currentTimeMillis() + EXPIRATIONTIME))
  .setAudience("ADMIN")
  .compact();

JWT是我的令牌,我通过调用此方法设置密钥:

signWith(SignatureAlgorithm.HS512, SECRET)

字符串SECRET是我的关键.

但是当我通过postman用正确的user_name和密码发出请求时,我在标题中收到了这个令牌:

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTUyMjkyMjAzOSwiYXVkIjoiQURNSU4ifQ.Wye52RTz8P3_7gPxZnJHOArA-ixaNHhQEcfoiAELu_56WXmMcZEAOlUyqP8yI0CWOZ4deXFRcP6azBpZpwNt-w

当我解密它时,我可以查看令牌数据:

{
  alg: "HS512"
}.
{
   sub: "admin",
   exp: 1522922039,
   aud: "ADMIN"
}

所以我的问题是:如何在不知道我的密钥的情况下解密JWT?



1> cassiomolin..:

要加密令牌我正在使用HS512签名算法[...]

不,您没有加密令牌.你正在签名.

获得令牌后,我能够在不知道密钥的情况下解密令牌[...]

不,您没有解密令牌有效负载.你正在解码它.

令牌有效负载是编码为Base64的JSON字符串,并且不需要密钥来解码它.


JSON Web Token(JWT)是一种开放标准,它定义了一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息.

JWT是以下类型令牌的通用名称:

JSON Web签名(JWS):对有效负载进行编码和签名,以便验证声明的完整性.

JSON Web加密(JWE):它们的有效负载是加密的,因此声明对其他方隐藏.

JWT,JWS和JWE
图像是从此页面中提取的.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有