Аутентификация сообщений играет важную роль в аутентификации личности и является важной частью системы аутентификации. Она широко используется в финансовых и коммерческих системах.
Код аутентификации сообщения (код аутентификации сообщения или MAC) обычно используется в качестве основы для аутентификации.
Основной принцип таков: используйте ключ (закрытый ключ) для создания небольшого блока данных и добавления его к передаваемому сообщению. Эта технология предполагает, что обе стороны обмена используют ключ K. Когда одна сторона связи хочет передать данные M другой стороне, MAC сообщения M рассчитывается с помощью специального алгоритма = F (K, M), где F — это ссылка. к функции операции аутентификации, а затем данные сообщения M и MAC вместе отправляются другой стороне. Когда другая сторона получает данные, она сначала использует тот же алгоритм F для расчета MAC и сравнивает его с переданным MAC. Если он совпадает, данные считаются правильными. Функцию аутентификации часто считают разновидностью алгоритма шифрования, но отличие состоит в том, что она не используется для обратных операций и имеет определенную степень безопасности. Обычно разные прикладные системы используют свои специфические функции аутентификации, что в определенной степени обеспечивает безопасность данных.
Начиная с j2sdk1.4, Java обеспечивает аутентификацию сообщений класса javax.crypto.Mac.
просмотреть обычную копию в буфер обмена, распечатать?
byte[] macData = «это тест Mac».getBytes(); // получаем экземпляр Mac, используя алгоритм HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); // инициализируем IV алгоритма, из файла можно прочитать 8 байт.
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // байты секретного ключа проверки Mac, также можно читать из файла
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f } //генерируем объект секретного ключа, используя секретные байты и Алгоритм DESede
Ключ SecretKey = новый SecretKeySpec(keyBytes, "DESede"); // инициализация Mac mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
byte[] macData = «это тест Mac».getBytes(); // получаем экземпляр Mac, используя алгоритм HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); // инициализируем IV алгоритма, из файла можно прочитать 8 байт.
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // байты секретного ключа проверки Mac, также можно читать из файла
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f } //генерируем объект секретного ключа, используя секретные байты и Алгоритм DESede
Ключ SecretKey = новый SecretKeySpec(keyBytes, "DESede"); // инициализация Mac mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
macCode — это сгенерированный Mac, и тот же Mac может быть сгенерирован с тем же ключом.
Пока взаимодействующие стороны гарантируют, что они используют один и тот же ключ, они могут гарантировать, что получат один и тот же Mac для достижения цели проверки сообщения.
Похоже, это тот же принцип, что и контрольная сумма, обычно используемая в Интернете.
-