Mudança rápida de bits de uma matriz de bytes - subchaves CMAC

Eu preciso implementar o mais rápido possível o deslocamento de bit esquerdo de uma matriz de 16 bytes emJavaCard.

Eu tentei este código:

private static final void rotateLeft(final byte[] output, final byte[] input) {
         short carry = 0;
         short i = (short) 16;
         do {
             --i;
             carry = (short)((input[i] << 1) | carry);
             output[i] = (byte)carry;
             carry = (short)((carry >> 8) & 1);
         } while (i > 0);
}

Alguma idéia de como melhorar o desempenho? Eu estava pensando em algunsUtil.getShort(...) eUtil.setShort(...) mágica, mas não consegui fazê-lo funcionar mais rápido que a implementação acima.

Essa é uma parte do cálculo das subchaves do CMAC e é feita com bastante frequência, infelizmente. Caso você conheça uma maneira mais rápida de calcular subchaves CMAC (as duas subchaves em um loop ou algo parecido), informe-me.

questionAnswers(3)

yourAnswerToTheQuestion