throw new CHKDecodeException("Crypto key too short");
try {
Cipher cipher = Cipher.getInstance("AES/CTR/NOPADDING", Rijndael.AesCtrProvider);
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(cryptoKey, "AES"), new IvParameterSpec(hash, 0, 16));
byte[] plaintext = new byte[data.length + 2];
int moved = cipher.update(data, 0, data.length, plaintext);
cipher.doFinal(headers, hash.length+2, 2, plaintext, moved);
int size = ((plaintext[data.length] & 0xff) << 8) + (plaintext[data.length + 1] & 0xff);
if((size > 32768) || (size < 0)) {
throw new CHKDecodeException("Invalid size: "+size);
}