List of usage examples for java.security DigestException DigestException
public DigestException()
From source file:fr.ortolang.diffusion.security.authentication.TicketHelper.java
public static Ticket decodeTicket(String ticket) { byte[] encryptedBytes = Base64.decodeBase64(ticket.getBytes()); try {/*from w ww . j ava 2 s .c om*/ Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedBytes = cipher.doFinal(encryptedBytes); // Extract digest from decryptedBytes (MD5 length is 16 bytes) byte[] digest = Arrays.copyOfRange(decryptedBytes, decryptedBytes.length - 16, decryptedBytes.length); byte[] serializedMap = Arrays.copyOfRange(decryptedBytes, 0, decryptedBytes.length - 16); MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM); if (!Arrays.equals(digest, md.digest(serializedMap))) { throw new DigestException(); } ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(serializedMap)); return (Ticket) ois.readObject(); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException | IOException | ClassNotFoundException | DigestException e) { LOGGER.log(Level.SEVERE, "Error when decoding ticket: " + e.getMessage()); } return null; }