Начиная с Android M, был выпущен API отпечатков пальцев, который действительно облегчает ввод пароля, контактов или даже шаблонов.

В этой статье я рассмотрю основы использования API отпечатков пальцев.

По сути, API отпечатков пальцев - это просто еще одна реализация криптографии, которая шифрует сообщение с помощью ключа.

Чтобы любой мог прочитать сообщение, он должен расшифровать сообщение этим ключом / своими ключами (в зависимости от конфигурации криптографии), чтобы узнать больше о криптографии, вы можете перейти по этой ссылке ..

В Android, чтобы вы могли использовать api отпечатка пальца, вы также должны предоставить другую меру безопасности (то есть вам нужно будет предоставить PIN-код, пароль или шаблон. Это означает, что мы должны проверить, есть ли другие меры безопасности, прежде чем мы сможем использовать API отпечатков пальцев.

Итак, давайте перейдем к делу ...

Шаг 1:

Создайте новый проект и установите mini sdk на уровень API 23 (ваше приложение может работать только на Android 6.0 и более поздних версиях. Запросите разрешение на использование отпечатка пальца в файле appManifest.xml)

as

Шаг 2:

Перед использованием API отпечатков пальцев мы должны проверить, выполняются ли эти три условия, а именно:

  1. Проверьте, есть ли другие меры безопасности (пароль, пин-код или шаблон): это можно сделать, получив ссылку на keyGuardManager.
  2. Проверьте наличие аппаратного обеспечения отпечатков пальцев: это можно сделать, получив ссылку на класс диспетчера отпечатков пальцев.
  3. Проверьте, зарегистрирован ли хотя бы один отпечаток пальца: это также можно сделать, получив ссылку на класс диспетчера отпечатков пальцев.

Если эти три условия соблюдены, теперь мы готовы исследовать API отпечатков пальцев.

Как я уже сказал, это еще одна реализация криптографии, изучите это изображение ниже:

Это асимметричная криптография. Система, известная как шифр, шифрует сообщение с помощью ключа, когда это сообщение попадает к получателю, этот же ключ затем используется для его расшифровки. Сразу возникают два вопроса:

  1. Как мы можем создать безопасный ключ
  2. Где мы храним этот ключ для дальнейшего использования ..

К счастью, платформа Android предоставляет хранилище ключей (для безопасного хранения наших ключей) и механизм генерации ключей ... Итак, мы собираемся сначала сгенерировать эти ключи, сохранить их в хранилище ключей, прежде чем использовать эти ключи для создания шифра для шифрования.

Шаг 3:

Чтобы создать keyStore, мы сначала получаем новый экземпляр, вы вызываете статический метод getInstance, передавая параметр String «AndroidKeyStore», это в равной степени вызывает исключение, поэтому убедитесь, что u перехватывает эти исключения.

Также создайте экземпляр класса keyGenerator, вы сделаете это, передав алгоритм ключа в качестве первого параметра.

Шаг 4:

Загрузите хранилище ключей, а также инициализируйте keyGenerator. Вы инициализируете keyGenetator, вызывая метод init и передавая объект keyGenParameterSpec. KeygenParameterObject устанавливает некоторые параметры шифрования, такие как цель (шифрование или дешифрование), режимы блокировки (в этом случае я использовал CBC ), а также заполнение шифрования (я использовал заполнение PKCS7) .. Все эти параметры будут использоваться для генерации ключей ..

Наконец, создайте ключ:

Шаг 5:

Создайте объект шифра, вы можете сделать это, вызвав метод Cipher.getInstance () и передав строку, называемую преобразованием (параметр, используемый для шифрования, и он должен соответствовать параметрам keyGenParameterSpec) .. строка преобразования состоит из трех частей, а именно: алгоритм, блок и заполнение (алгоритм / блок / заполнение). После этого получите secrectKeys, хранящиеся в хранилище ключей Android, и инициализируйте шифр, вызвав метод init для объекта шифра и передайте секретный ключ в качестве второго параметр ..

Шаг 6:

Создайте CryptoObject, используя только что созданный шифр, этот CryptoObject будет передан в один из перегруженных конструкторов класса FingerprintManager.CryptoObject (другие конструкторы принимают Mac и объект Signature).

Шаг 6:

Создайте класс FingerprintManagerHelper, который расширяет FingerprintManager.AuthenticationCallback, а также переопределите методы onAuthenticationSuccreded и onAuthenticationFailed. В этом классе вы выполняете вызов проверки подлинности по отпечатку пальца, если отпечаток пользователя соответствует любому отпечатку пальца, записанному на устройстве, тогда вызывается onAuthenticationSucceeded, если он 't match any вызывается onAuthenticationFailed .. Вы также можете переопределить onAuthenticationError, это позволяет вам обрабатывать любые ошибки, возникающие во время аутентификации.

Итак, теперь вы можете обрабатывать любую другую логику аутентификации в методе onAuthenticationSucceeded ... На данный момент это все, чтобы получить полный демонстрационный код, выполните следующие действия:



Вы также можете ознакомиться с официальной документацией по отпечатку пальца Api здесь.

Спасибо….