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.