Schnelle Bitverschiebung eines Byte-Arrays - CMAC-Unterschlüssel

Ich muss so schnell wie möglich eine Links-Bit-Verschiebung eines 16-Byte-Arrays in @ implementiere JavaCard.

Ich habe diesen Code ausprobiert:

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);
}

Irgendwelche Ideen, wie man die Leistung verbessert? Ich habe über ein @ nachgedacUtil.getShort(...) undUtil.setShort(...) magic, aber ich habe es nicht geschafft, es schneller zum Laufen zu bringen als die obige Implementierung.

Dies ist ein Teil der Berechnung von CMAC-Unterschlüsseln und wird leider häufig durchgeführt. Falls Sie einen schnelleren Weg kennen, um CMAC-Unterschlüssel zu berechnen (beide Unterschlüssel in einer Schleife oder so ähnlich), lassen Sie es mich bitte wissen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage