0

I'm trying to integrate an Java Web App with an deploied IdP at my school. The IdP is already configured, I make the request and everything is fine, except one. I can't decrypt the IdP response.

Here you can find the response that I receive after a login

I have a public_key.crt and a private_key.pem. I already have decrypted the symetric key inside the IdP response, that was encrypted with my public_key.crt. After that I get a 256 bytes array, wich I think is an AES-256 passphrase, but the IdP Response only talks about an AES-128-CBC. Nevertheless I try to create an Java AES object to decrypt the SAML Assertion, but I always get the error: Invalid AES key length: 256 bytes

Here is the code:

    PrivateKey privKey = ...; // PrivateKey constructed with my private_key.pem file
    System.out.println(privKey); // To show private_key.pem info

    // you can find these two strings on IdP Response, from link above 
    String encAssertion = "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";
    String encryptedKey = "qJNLI5UNAVSVwRCI8EHSa5GuhFAxPi9VZleCCrriLHSXWHf79RDG6ocU7slHZaf8zvIc2su41iJsZeb3xXOsg73xbJ2vLOWW5GQCRh97OxFmbd2M0UkYMM57g2YmDlPjTo7L75GrX2LmmL1ko47QmCb60b0um2m6RGNdj32QUIGArUM4TUdamSi0a8+bThe565OUkS25OfrT02z1er1m+VprUa5SPwqLXRqmg9dknCX8pIi5vrD02bRrKP5b+a6FTA77ocOFtYgzPQWPYfAU5jFledHRJA3phwsm7yOFvyjOeWtOVCAKmoYALJ+5rdxnkMGr/SGaI3jjNup7WQJxtw==";

    Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
    cipher.init(Cipher.DECRYPT_MODE, privKey);
    byte[] decrypt = cipher.doFinal(Base64.decodeBase64(encryptedKey));

    System.out.println("Decrypted Key length: " + decrypt.length); // Decrypted Key length: 256
    System.out.println(new String(decrypt, "UTF-8")); // Some stupid chars

    SecretKey skeySpec = new SecretKeySpec(decrypt, "AES");

    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    // cipher = Cipher.getInstance("AES/CBC/NoPadding");
    // cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, (Key) skeySpec);
    byte[] decryptedAssertion = cipher.doFinal(encAssertion.getBytes());

The error occurs on the last line. Invalid AES key length: 256 bytes

4

0 回答 0