我试图使用我的私钥生成JWK,同时使用jose4j库使用前面提到的JWK生成JWE。但是生成的键似乎不正确,也没有所有字段(只生成n、e和kty get,预期字段为kty、n、e、d、p、q、dp、dq、qi)。有什么建议吗?
我使用以下代码:
byte[] decoded = Base64.decodeBase64(privateKeyString);
PrivateKey privateKey =
KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
KeyFactory kf = KeyFactory.getInstance("RSA");
RSAPrivateKeySpec privKeySpec = kf.getKeySpec(privateKey, RSAPrivateKeySpec.class);
RSAPublicKeySpec pubKeySpec =
new RSAPublicKeySpec(privKeySpec.getModulus(), privKeySpec.getPrivateExponent());
RSAPublicKey pubKey = (RSAPublicKey) kf.generatePublic(pubKeySpec);
RsaJsonWebKey jwkp = (RsaJsonWebKey) PublicJsonWebKey.Factory.newPublicJwk(pubKey);
jwkp.setPrivateKey(privateKey);
jwkp.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);发布于 2022-07-22 19:52:29
需要在包含私钥字段的JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE调用中显式地使用toJson(...)。这是具体的。其他的-- p,q,dp,dq,qi --如果是RSAPrivateCrtKey,就会在那里
https://stackoverflow.com/questions/73069380
复制相似问题