我试图以jwt.io为例,复制JWE的解码,并使用库jose4j将其转换为代码
在站点jwt.io中,我有以下内容:
标题:
{
"alg": "HS256"
}有效载荷:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}核实签名:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
Fdh9u8rINxfivbrianbbVT1u232VQBZYKx1HGAGPt2I
) 秘密base64未被编码。
现在,我尝试用jose4j再现这种情况,然后在编码字段上得到相同的值,即:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.jOJ7G4oijaDk9Tr4ntAXczd6PlI4oVvBU0_5cf7oaz4然后:
Key key = new HmacKey("Fdh9u8rINxfivbrianbbVT1u232VQBZYKx1HGAGPt2I".getBytes(StandardCharsets.UTF_8));
JsonWebEncryption jwe = new JsonWebEncryption();
String payload = Json.createObjectBuilder()
.add("sub", "1234567890")
.add("name", "John Doe")
.add("iat", "1516239022")
.build()
.toString();
jwe.setPayload(payload);
jwe.setHeader("alg", "HS256");
jwe.setKey(key);
String serializedJwe = jwe.getCompactSerialization();
System.out.println("Serialized Encrypted JWE: " + serializedJwe);然而,我得到了这个错误:
org.jose4j.lang.InvalidAlgorithmException: ECDH+ A128KW,ECDH+ A192KW,ECDH+A192KW,ECDH+A192 ES,ECDH+ A256KW,PBES-HS256+A128KW,PBES2-ES 384+A192KW,PBES-HS512+A256KW,A128GCMKW,A192GCMKW,A256GCMKW)。
发布于 2021-06-11 21:36:10
HS256是一个JWS算法,因此您需要使用JsonWebSignature而不是JsonWebEncryption来完成您想要做的事情。
https://stackoverflow.com/questions/67924771
复制相似问题