public byte[] decrypt(byte[] cryptedData, int offset, int length, byte[] decryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams) { byte[] initVect = new byte[16]; if (decryptionKey.length != keyBytes) { throw new IllegalArgumentException( "Needed key length is " + keyBytes + ". Got " + decryptionKey.length + "."); } /* Set IV as engine_boots + engine_time + decrypt params */ initVect[0] = (byte) ( (engineBoots >> 24) & 0xFF); initVect[1] = (byte) ( (engineBoots >> 16) & 0xFF); initVect[2] = (byte) ( (engineBoots >> 8) & 0xFF); initVect[3] = (byte) ( (engineBoots) & 0xFF); initVect[4] = (byte) ( (engineTime >> 24) & 0xFF); initVect[5] = (byte) ( (engineTime >> 16) & 0xFF); initVect[6] = (byte) ( (engineTime >> 8) & 0xFF); initVect[7] = (byte) ( (engineTime) & 0xFF); System.arraycopy(decryptParams.array, decryptParams.offset, initVect, 8, 8); if (logger.isDebugEnabled()) { logger.debug("initVect is " + asHex(initVect)); } return doDecrypt(cryptedData, offset, length, decryptionKey, initVect); }
public byte[] decrypt(byte[] cryptedData, int offset, int length, byte[] decryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams) { byte[] initVect = new byte[16]; if (decryptionKey.length != keyBytes) { throw new IllegalArgumentException( "Needed key length is " + keyBytes + ". Got " + decryptionKey.length + "."); } /* Set IV as engine_boots + engine_time + decrypt params */ initVect[0] = (byte) ( (engineBoots >> 24) & 0xFF); initVect[1] = (byte) ( (engineBoots >> 16) & 0xFF); initVect[2] = (byte) ( (engineBoots >> 8) & 0xFF); initVect[3] = (byte) ( (engineBoots) & 0xFF); initVect[4] = (byte) ( (engineTime >> 24) & 0xFF); initVect[5] = (byte) ( (engineTime >> 16) & 0xFF); initVect[6] = (byte) ( (engineTime >> 8) & 0xFF); initVect[7] = (byte) ( (engineTime) & 0xFF); System.arraycopy(decryptParams.array, decryptParams.offset, initVect, 8, 8); if (logger.isDebugEnabled()) { logger.debug("initVect is " + asHex(initVect)); } return doDecrypt(cryptedData, offset, length, decryptionKey, initVect); }