嗯,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
chairuosen 2021-12-01 12:36:41 +08:00
只是个安全提示吧,key 太短容易被碰撞
|
2
GM 2021-12-01 12:48:16 +08:00
这只是警告秘钥太短,并没有限制你长度。
|
3
GM 2021-12-01 12:49:22 +08:00
吧
补齐上面那句话。 |
4
pupboss 2021-12-01 12:54:35 +08:00
如果你的 key 是 123456 ,那我拿到你返回的 jwt 之后,分分钟就暴力破解你签名的内容,然后伪造管理员的内容重新签名,去你的系统搞破坏
不过看你的用法,Jwts.builder().setSubject("Joe") 里面就写了个名字,想来也没啥卵用 |
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 实现有问题。 |
7
pjian 2022-08-05 15:54:32 +08:00
Java 可以兼容吗,有没有历史版本 lib 不抛异常的
|