为啥rsa加密了jwt在网上的jwt解密还能破解

img

img

请问大家们是我理解错误吗 真的很不理解 我明明rsa加密了 还没解密为啥能读到信息

1. jwt的组成三部分

Header.PayLoad.Signature
Header(头部):存放token类型和加密算法,此处的加密算法是签名的加密算法,头部使用Base64编码;
PayLoad(载荷):存放具体的信息和业务数据(如用户的id)等等,载荷使用Base64编码;
Signature(签名):对Base64编码之后Header、PayLoad,使用头部定义的算法进行加密(你这里是rsa);

2. 为啥明明加密了可以“无伤解密”回答:

因为头部和载荷使用的是Base64算法,但是Base64算法只是一种将二进制换成文本的一种编码方法,不是一种加密算法,所以看起来是可以直接解析的,最好不要将敏感信息放到载荷之中。

3. 加密的作用

加密的作用我的理解是,它是为了防止别人伪造jwt,当一个客户端携带token到服务端,只要保证这个token不是别人伪造的不就达到目的了。
当你使用rsa加密,你会怎么验证这个token的有效性,我没找到具体的讲解,不过应该是下面两种方式吧。

  1. 再将头部和载荷使用私钥加密一次得到签名,与传送过来的token中的签名对比,是否一致。
  2. 使用公钥解密签名,观察解析出来的头部和载荷与token中的信息是否一致

4. 最后

如果有用可以给个采纳吗?

用AES加密吧

后台很多的认证,例如:JWT 也不过是一种验证的工具,而不是真正的加密后看不到,只是为了验证登录的人是不是还是你。
所以不建议放入私人重要信息在Payload中,可以放入一个用户id或者name,这些无关紧要的信息。