Как расшифровать данные JWE (Json Web Encryption) с помощью закрытого ключа в Java - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть закрытый ключ, похожий на приведенный ниже

, например

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGBRdsiDqKPGyH
gOpzxmSU2EQkm+zYZLvlPlwkwyfFWLndFLZ3saxJS+LIixsFhunrrUT9ZZ0x+bB6
MV55o70z4ABOJRFNWx1wbMGqdiC0Fyfpwad3iYpRVjZO+5etHA9JEoaTPoFxv+kt
QwBjBRAJ3Y5jtrESprGdUFRb0oavDHuBtWUt2XmXspWgtRn1xC8sXZExDdxmJRPA
ADTO3rrGo9hicG/WKGzSHD5l1f+IO1SfmUN/6i2JjcnE07eYArNrCfbMgkFavj50
2ne2fSaYM4p0o147O9Ty8jCyY9vuh/ZGid6qUe3TBI6/okWfmYw6FVbRpNfVEeG7
kPfkDW/JdH7qkWTFbh3eH1k=
-----END PRIVATE KEY-----

У меня есть данные JWE, как показано ниже, которые были зашифрованы с использованием открытого ключа, сгенерированного из вышеупомянутого закрытого ключа / сертификата

aaaaa.bbbbb.ccccc.ddddd.eeeee

Может кто-нибудь дать мне код Java, который я могу использовать для расшифровки этого JWE, используя мой закрытый ключ? Я не могу найти четкий ответ из Интернета. Я добрый, если новичок в этой концепции JWE

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

С чего можно начать:

public static void main(String[] args) throws Exception
{
    Key privateKey = KeyFactory
            .getInstance("RSA")
            .generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode("your base64 private key")));

    Cipher decrypt = Cipher.getInstance("RSA/ECB/PKCS1Padding");

    decrypt.init(Cipher.DECRYPT_MODE, privateKey, new IvParameterSpec(Base64.getDecoder().decode("ccccc")));

    String decryptedMessage = new String(decrypt.doFinal(Base64.getDecoder().decode("ddddd")), StandardCharsets.UTF_8);
}
0 голосов
/ 15 сентября 2018

Из-за вашего другого вопроса и тегов к этому вопросу, я полагаю, вы выбрали библиотеку Nimbus JOSE + JWT.Независимо от вашей платформы для JWT, я советую вам использовать предоставленный способ для шифрования / дешифрования ваших токенов, потому что они проверяют структуру токена.

RSAPrivateKey privateKey; //initialize with your key
String jwtTokenAsString = "aaaaa.bbbbb.ccccc.ddddd.eeeee"; //your token
EncryptedJWT encryptedJWT = EncryptedJWT.parse(jwtTokenAsString);
RSADecrypter decrypter = new RSADecrypter(privateKey);
encryptedJWT.decrypt(decrypter);

//Access content with diffrent methods
JWTClaimsSet claims = encryptedJWT.getJWTClaimsSet();
Payload payload = encryptedJWT.getPayload();
0 голосов
/ 15 сентября 2018

Взгляните на https://jwt.io. Этот сайт помогает вам отладить вашу проблему и дает ссылки на несколько библиотек, которые решают вашу проблему.

...