V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ruandao
V2EX  ›  问与答

jwt 密钥的长度限制, Java (jsonwebtoken)中有长度限制, nodejs(egg-jwt)的没有

  •  
  •   ruandao · 2021-12-01 12:11:48 +08:00 · 1263 次点击
    这是一个创建于 869 天前的主题,其中的信息可能已经有所发展或是发生改变。

    嗯,https://jwt.io/#debugger-io 中的好像也没有长度限制

    nodejs (egg-jwt) 也没有

    他们是自己填充了缺少的位置吗

        String key = "123456";
        String jws = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS256, key).compact();
        
    

    在 java 中运行的话,会出现

    The signing key's size is 32 bits which is not secure enough for the HS256 algorithm.

    的报错

    问这个问题,主要是我 nodejs (egg-jwt) 生成的 token 。java 这边会报错

    谢谢

    第 1 条附言  ·  2021-12-01 13:39:25 +08:00
    java 这边直接抛出了一个异常

    io.jsonwebtoken.security.WeakKeyException

    而不是说,打印日志警告下
    7 条回复    2022-08-05 15:54:32 +08:00
    chairuosen
        1
    chairuosen  
       2021-12-01 12:36:41 +08:00
    只是个安全提示吧,key 太短容易被碰撞
    GM
        2
    GM  
       2021-12-01 12:48:16 +08:00
    这只是警告秘钥太短,并没有限制你长度。
    GM
        3
    GM  
       2021-12-01 12:49:22 +08:00



    补齐上面那句话。
    pupboss
        4
    pupboss  
       2021-12-01 12:54:35 +08:00
    如果你的 key 是 123456 ,那我拿到你返回的 jwt 之后,分分钟就暴力破解你签名的内容,然后伪造管理员的内容重新签名,去你的系统搞破坏

    不过看你的用法,Jwts.builder().setSubject("Joe") 里面就写了个名字,想来也没啥卵用
    ruandao
        5
    ruandao  
    OP
       2021-12-01 13:40:14 +08:00
    @pupboss 网上拷贝的代码
    Citrus
        6
    Citrus  
       2021-12-01 13:43:45 +08:00
    根据文档:

    https://www.rfc-editor.org/rfc/rfc7518#page-7

    A key of the same size as the hash output (for instance, 256 bits for "HS256") or larger MUST be used with this algorithm.

    Java 实现没问题,nodejs 实现有问题。
    pjian
        7
    pjian  
       2022-08-05 15:54:32 +08:00
    Java 可以兼容吗,有没有历史版本 lib 不抛异常的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5337 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:08 · PVG 17:08 · LAX 02:08 · JFK 05:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.