Как установить длину кода аутентификации сообщения в java jce / jca - PullRequest
2 голосов
/ 05 октября 2011

Я использую следующий код для получения AESCMAC

Mac mac = Mac.getInstance("aescmac", new BouncyCastleProvider());
mac.init(k_mac );
byte[] tooLong = mac.doFinal(tmp);

doFinal сгенерирует массив байтов размером 16, но я бы хотел, чтобы он был длиной 8 байт.я вижу, что есть метод getMacLength () с возвратами 16, но нет метода setMacLength.спасибо за вашу помощь

Ответы [ 3 ]

3 голосов
/ 04 июля 2013

Согласно NIST 800-38B, глава 6.2 (Генерация MAC), шаг 7, для генерации N-битного MAC вы просто берете N старших значащих бит. В Приложении A.2 обсуждаются последствия использования сокращенного MAC.

1 голос
/ 05 октября 2011

AES-CMAC создает 128-битный MAC (см. http://tools.ietf.org/html/rfc4493),, т.е. 16 байтов. Если вы хотите 8-байтовый Mac, выберите алгоритм, который создает 64-битный MAC.

Есть ли какая-то конкретная причина , почему вам нужен 64-битный, а не 128-битный MAC?

0 голосов
/ 05 октября 2011

Я не думаю, что вы можете уменьшить длину.Информация имеет длину 16 байтов;Вы не можете сократить его без потери информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...