如何解决jose4j,用对称密钥解密 JWE
我正在尝试重现从 jwt.io 开始的 JWE 解码作为示例,并使用库 jose4j 转换为代码
标题:
{
"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:HS256 是一种未知、不受支持或不可用的算法(不是 [RSA1_5、RSA-OAEP、RSA-OAEP-256、dir、A128KW、A192KW、A256KW、ECDH-ES、 ECDH-ES+A128KW、ECDH-ES+A192KW、ECDH-ES+A256KW、PBES2-HS256+A128KW、PBES2-HS384+A192KW、PBES2-HS512+A256KW、A128GC256KW、A128GCMKWMK>、A19pWGC]
解决方法
HS256 是一种 JWS 算法,因此您需要使用 JsonWebSignature
而不是 JsonWebEncryption
来完成您想要执行的操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。