Быстрый битовый сдвиг байтового массива - подразделы CMAC

Мне нужно реализовать как можно быстрее сдвиг влево 16-байтового массива вJavaCard.

Я попробовал этот код:

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

Есть идеи, как улучшить производительность? Я думал о некоторыхUtil.getShort(...) а такжеUtil.setShort(...) волшебство, но мне не удалось заставить это работать быстрее чем реализация выше.

Это одна из частей подсистем CMAC, и, к сожалению, это делается довольно часто. Если вы знаете какой-нибудь более быстрый способ вычисления подразделов CMAC (оба подключа в одном цикле или что-то в этом роде), пожалуйста, дайте мне знать.

Ответы на вопрос(0)

Ваш ответ на вопрос