/** * Encrypts data with secret key. * * @param data text to encrypt * @return encrypted text in base64 format */ public String encrypt(String data) { Objects.requireNonNull(data, "Data to be encrypted"); if (!secretKeySpec.isPresent()) { return data; } try { // encrypt data Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec.get()); byte[] encrypted = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)); // convert encrypted bytes to string in base64 return Base64.encodeBase64URLSafeString(encrypted); } catch (InvalidKeyException ex) { logger.error(getHelperLogMessage(), ex); throw new RuntimeException(ex); } catch (GeneralSecurityException ex) { logger.error("Failed to encrypt data.", ex); return ""; } }
payload = encryption.decrypt(payload); CookieDataCodec.decode(data, payload);
sessionData = encryption.encrypt(sessionData); String sign = crypto.signHmacSha1(sessionData);
/** * Decrypts data with secret key. * * @param data text to decrypt in base64 format * @return decrypted text */ public String decrypt(String data) { Objects.requireNonNull(data, "Data to be decrypted"); if (!secretKeySpec.isPresent()) { return data; } // convert base64 encoded string to bytes byte[] decoded = Base64.decodeBase64(data); try { // decrypt bytes Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec.get()); byte[] decrypted = cipher.doFinal(decoded); // convert bytes to string return new String(decrypted, StandardCharsets.UTF_8); } catch (InvalidKeyException ex) { logger.error(getHelperLogMessage(), ex); throw new RuntimeException(ex); } catch (GeneralSecurityException ex) { logger.error("Failed to decrypt data.", ex); return ""; } }