Acesso aleatório de dados criptografados no modo AES GCM

Há um exemplo muito bom para o modo AES CTR de acesso aleatório e funciona:Acesso aleatório InputStream usando o modo AES CTR no android

private static final int AES_BLOCK_SIZE = 16;
private static IvParameterSpec calculateIVForOffset(final IvParameterSpec iv,
    final long blockOffset) {
final BigInteger ivBI = new BigInteger(1, iv.getIV());
final BigInteger ivForOffsetBI = ivBI.add(BigInteger.valueOf(blockOffset
        / AES_BLOCK_SIZE));

final byte[] ivForOffsetBA = ivForOffsetBI.toByteArray();
final IvParameterSpec ivForOffset;
if (ivForOffsetBA.length >= AES_BLOCK_SIZE) {
    ivForOffset = new IvParameterSpec(ivForOffsetBA, ivForOffsetBA.length - AES_BLOCK_SIZE,
            AES_BLOCK_SIZE);
} else {
    final byte[] ivForOffsetBASized = new byte[AES_BLOCK_SIZE];
    System.arraycopy(ivForOffsetBA, 0, ivForOffsetBASized, AES_BLOCK_SIZE
            - ivForOffsetBA.length, ivForOffsetBA.length);
    ivForOffset = new IvParameterSpec(ivForOffsetBASized);
}

return ivForOffset;
}

No entanto, ele não funciona no modo AES GCM. Estou recebendo lixo quando descriptografado. Eu não sou especialista em criptografia e estava tentando decifrá-lo por alguns dias. Talvez alguém possa dar alguma idéia sobre isso? Meu palpite é que preciso alterar o cálculo IV para deslocamento de alguma forma ou isso tem algo a ver com uma tag de autenticação (que não estou usando).

questionAnswers(2)

yourAnswerToTheQuestion