- Fingerprint Scanner: реализация в Android приложении
- Начинаем работу с Fingerprint API
- Проверка сенсора
- Android Keystore
- Реализация шифратора
- Реализация Fingerprint sensor
- Вывод
- Как получить сертификат отпечатка пальца SHA-1 в Android Studio для режима отладки?
- 25 ответов
- Обновление добавлено для Android Studio V 2.2 на последнем шаге
- Android Studio V 2.2 Обновление
- Похожие вопросы:
Fingerprint Scanner: реализация в Android приложении
Большая часть смартфонов, выпущенных после 2013 года, имеет сканер отпечатков пальцев (Fingerprint scanner). Он стал настолько популярным, что уже практически любое действие, требующее подтверждения, полагается на эту функцию.
Ситуация не вызывает удивления. Ведь сканеры отпечатков действительно безопасны и уникальны. Они намного удобнее громоздких паролей, поскольку существенно ускоряют все онлайн-транзакции. Поэтому давайте будем объективными: Fingerprint scanner реально может повысить надежность, безопасность и юзабельность любого проекта. Наша сегодняшняя статья — о сканерах отпечатков пальцев. Мы расскажем об основах работы с функционалом и продемонстрируем его реализацию в обычном Android приложении.
Начинаем работу с Fingerprint API
В Android 6.0 для аутентификации пользователя посредством отпечатка пальца был введен Fingerprint API. Благодаря этой функции, пользователь лишается сомнительного удовольствия тратить время на ввод пароля. Вместо него у нас появился сенсор.
Как это происходит на практике? При регистрации в приложении пользователь вводит пароль. Далее создается криптографический ключ, который нужен для работы с шифратором. После этого пароль зашифровывается и сохраняется. При следующем входе пользователь может ввести отпечаток пальца, и приложение расшифрует сохраненный пароль. Все просто.
Пользовательские данные будут храниться в зашифрованном виде. Для этого нам понадобится:
- шифратор, с помощью которого пароль, собственно, шифруется и расшифровывается пароль
- криптографический ключ
- хранилище для криптографических ключей.
Проверка сенсора
Для начала стоит указать разрешение на использование сенсора в манифесте. Оно совершенно безопасно, так как не требует проверки при работе приложения. Д
Для работы с сенсором API имеет классы FingerprintManager и FingerprintManagerCompat. Заметим, что при использовании FingerprintManagerCompat оборудование, сканирующее отпечаток пальца, может быть не найдено на устройстве, так как реализация этого класса проверяет системное свойство FEATURE_FINGERPRINT. А производители телефонов его не всегда указывают.
Давайте создадим FingerprintManager:
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(FINGERPRINT_SERVICE);
Проверить устройство на наличие сенсора:
fingerprintManager.isHardwareDetected()
Теперь проверяем зарегистрированы ли отпечатки пальцев:
fingerprintManager.hasEnrolledFingerprints()
И защищено ли устройство паролем:
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
keymanger.isKeyguardSecure()
Android Keystore
Для криптографических ключей Android предоставляет замечательное хранилище — KeyStore. Оно довольно успешно предотвращает утечку информацию из устройства. Однако важно помнить, что в KeyStore следует хранить только криптографические ключи. Паролям и приватным данным — там не место.
Так происходит инициализация KeyStore:
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(FINGERPRINT_SERVICE);
Проверить устройство на наличие сенсора:
fingerprintManager.isHardwareDetected()
Теперь проверяем зарегистрированы ли отпечатки пальцев:
fingerprintManager.hasEnrolledFingerprints()
И защищено ли устройство паролем:
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
keymanger.isKeyguardSecure()
Для криптографических ключей Android предоставляет замечательное хранилище — KeyStore. Оно довольно успешно предотвращает утечку информацию из устройства. Однако важно помнить, что в KeyStore следует хранить только криптографические ключи. Паролям и приватным данным — там не место.
Так происходит инициализация KeyStore:
Следующим шагом мы реализуем криптоключи. Здесь у нас имеются варианты:
- Симметричный ключ — KeyGenerator
- Пара из приватного и публичного ключа — KeyPairGenerator
Так как мы шифруем пароль при первом входе пользователя, а расшифровываем — при вводе отпечатка, нам понадобится пара из публичного и приватного ключа. С помощью публичного ключа будет производится шифрование пароля при первом входе, а расшифровка пароля при сканировании отпечатка будет осуществляться с помощью приватного ключа.
sKeyPairGenerator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, KEY_STORE);
KeyProperties.KEY_ALGORITHM_RSA — алгоритм шифрования, для которого предназначен ключ
KEY_STORE— название хранилища ключей
Воспользуемся KeyPairGenerator для создания пары ключей:
KEY_ALIAS — псевдоним ключа
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT — используем ключ для шифровки и расшифровки
KeyProperties.ENCRYPTION_PADDING_RSA_OAEP — дополнение.
.setUserAuthenticationRequired(true) — подтверждаем отпечаток пальца при работе с ключом.
Для проверки существования ключа используем:
sKeyStore.containsAlias(KEY_ALIAS)
Реализация шифратора
Для шифровки и дешифровки воспользуемся классом Cipher:
sCipher = Cipher.getInstance(«RSA/ECB/OAEPWithSHA-256AndMGF1Padding»);
RSA — алгоритм шифрования
ECB— режим смешивания
При использовании шифратора в режиме шифрования текста (Cipher.ENCRYPT_MODE) нам нужен публичный ключ. А он требует подтверждение пользователя. Поэтому мы используем слепок ключа.
Для расшифровки (Cipher.DECRYPT_MODE) мы используем приватный ключ, который требует подтверждения отпечатком пальца.
Методы шифровки и расшифровки:
Реализация Fingerprint sensor
Для использования сенсора воспользуемся методом:
voiid authenticate(CryptoObject crypto, CancellationSignal cancel, int flags, AuthenticationCallback callback, Handler handler)
CancellationSignal — позволяет отменить процесс ввода отпечатка
AuthenticationCallback — интерфейс, возвращающий результаты считывания отпечатка
Для обработки результатов отпечатка пальцев реализуем AuthenticationCallback:
Yes! Мы сделали это!
Вывод
Интеграция отпечатков пальцев значительно упрощает взаимодействие пользователя с приложением. Везде, где раньше требовалось ввести пароль, вы теперь можете приложить палец к сенсору и вуаля. Это экономит время, нервы и делает опыт работы с приложением приятным. Не забываем: user friendly — наше все!
Полный код проекта здесь.
Для лучшего понимания стоит ознакомится с примером использования сканера отпечатков от Google
Источник
Как получить сертификат отпечатка пальца SHA-1 в Android Studio для режима отладки?
Я переместился с 41-го на 35 — й . Теперь я пытаюсь работать над своим картографическим приложением. Поэтому мне нужен мой номер сертификата отпечатка пальца SHA-1.
Когда я использовал Eclipse, он был прямо под Windows — > Preferences — > Android — > Build . Но в Android Studio году я не мог найти ни одного такого варианта, чтобы легко найти отпечаток пальца. Я использую Windows. Я прочитал по этой ссылке , что:
Android Studio автоматически подписывает ваше приложение в режиме отладки, Когда вы запускаете или отлаживаете свой проект из IDE.
Поэтому я попытался запустить это в командной строке после установки моего пути Java bin по этой ссылке и, к сожалению, не смог найти свой отпечаток пальца. Это говорит о том, что это незаконный вариант .
Есть ли способ найти отпечаток пальца SHA-1 из Android Studio, как это было очень легко в Eclipse? Поскольку я новичок в Android Studio, каков полный процесс его поиска?
Еще одна вещь, которую я хочу добавить, — это то, что мой Eclipse генерирует отпечаток пальца SHA-1, и ранее мое приложение было зарегистрировано на этом отпечатке пальца в консоли разработчика Google, и я работал над этим приложением в Eclipse по этому ключу API. Может ли тот же самый ключ API работать над этим моим проектом в Android Studio?
25 ответов
При создании клиента ID для Android в консоли разработчика платформы Google Cloud я получаю следующее всплывающее окно: Дубликат отпечатка пальца Указанный вами отпечаток пальца уже используется клиентом Android OAuth2 ID в этом проекте или другом проекте Как говорится во всплывающем окне, у меня.
Самые простые способы:
Обновление добавлено для Android Studio V 2.2 на последнем шаге
Есть два способа сделать это.
1. Более быстрый способ :
- Открыть Android Studio
- Откройте свой проект
- Нажмите на Gradle (на правой боковой панели вы увидите панель Gradle )
- Нажмите на Refresh (нажмите на Refresh from Gradle Bar, вы увидите список Gradle скриптов вашего проекта)
- Нажмите на свой проект ( список форм имени вашего проекта (root))
- Нажмите на кнопку задачи
- Нажмите на Android
- Дважды щелкните на signingReport (вы получите SHA1 и MD5 в панели запуска (иногда это будет в консоли Gradle))
- Выберите модуль приложения из выпадающего списка выбор модуля для запуска или отладки приложения
Проверьте скриншот ниже:
2. Работа с активностью Google Maps :
- Открыть Android Studio
- Откройте Свой Проект
- Нажмите на меню Файл -> выберите Новый — > нажмите на Google — > выберите активность Google Maps
- Появится диалоговое окно -> нажмите кнопку Готово
- Android Studio автоматически сгенерирует файл XML с именем google_maps_api.xml
- Вы получите ключ debug SHA1 здесь (в строке № 10 файла XML)
Проверьте скриншот ниже:
Android Studio V 2.2 Обновление
Есть проблема с исполнением .
Решение :
- Нажмите на кнопку переключить выполнение задач/текстовый режим из панели запуска
Проверьте скриншот ниже:
Моя проблема заключается в том же, что я также переместил свой проект Google Maps с Eclipse на Android Studio . Я решил свою проблему, следуя этому:
Перейдите в каталог Java bin с помощью команды:
Теперь введите следующую команду в вашем командном окне (CMD.EXE):
Или вы можете просто написать это в cmd, если вы не знаете имя пользователя:
И вы получите SHA1.
Затем я создал новый ключ из https:/ / code.google.com/apis / console из-за того, что мое имя пакета было изменено, а затем использовал этот ключ в своем приложении. Это прекрасно работает.
Убедитесь , что вы находитесь в папке BIN jdkX.X.X_XX (мое имя папки jdk1.7.0_71), или же, если вы не знаете, какое имя папки у вас есть, найдите его, открыв папку Java, и вы увидите, каково имя папки, но вы должны быть в своей папке BIN, а затем выполните эту команду. Сегодня я получил свое значение SHA1 в командном окне cmd с помощью описанной выше процедуры.
SNAPSHOT:
Для Mac это сработало идеально:
Всего несколько дней назад я изменил свой отпечаток пальца SHA-1 (с подписи на dev) для тестирования. Теперь я хочу вернуться к подписанию SHA-1, но это не позволяет мне добавить живой отпечаток пальца SHA-1. Это дает мне duplicate fingerprint error . Я уверен, что у нас нет никакого другого.
я разработчик android, и я получил проект от другого разработчика, который использовал сертификат отпечатка пальца SHA1 для отображения карты google, но я не хочу его использовать. кто-нибудь поможет мне удалить этот сертификат отпечатка пальца SHA1 и отобразить карту google без сертификата.
Я только что нашел дело, чтобы получить SHA-1 в Android Studio:
- Нажмите на свой пакет и выберите New — >Google — >Google Maps Activity
- Android Studio перенаправляет вас на google_maps_api.xml
И вы увидите все, что вам нужно, чтобы получить google_maps_key .
Лучшее решение для генерации ключа SHA-1 для Android-от Android Studio .
Нажмите на Gradle в дальнем правом углу:
Нажмите на значок обновления, и вы увидите название приложения:
Нажмите на задачи — > отчет -> подписание отчета :
Найдите клавишу SHA-1 в нижней части консоли:
[Обновлено в 2017 году]
Шаг 1:в правом верхнем углу Android Studio нажмите на опцию Gradle.
Шаг 2 :
— Нажмите кнопку Обновить (Нажмите кнопку Обновить из панели Gradle, вы увидите список Gradle скриптов вашего проекта)
— Нажмите на свой проект (список форм имени вашего проекта (root))
— Нажмите на задачи
— Нажмите на Android
— Дважды щелкните на signingReport (вы получите SHA1 и MD5 в панели консоли/запуска Gradle)
Шаг 3: Нажмите на опцию консоли Gradle в нижней части Android Studio, чтобы увидеть ваш ключ SHA1.
Шаг 4: Теперь у вас есть ключ SHA, но вы не можете запустить свой проект. Вот почему измените свою конфигурацию на режим приложения. См. изображение ниже.
Шаг 5: Счастливое Кодирование!!
я иду с ответом @Hiren Patel, но немного изменяюсь в android studio 2.2
Для Linux & Mac
- Нажмите на значок Gradle в правой панели.
- Нажмите на имя корневого проекта.
- Нажмите Кнопку Задачи
- Нажмите кнопку Android
- Нажмите кнопку signingReport
- в нижней панели, где вы видите запустить отчет
- Нажмите кнопку «Toggle Tasks Execytions/text mode»
- вы можете увидеть sha-1
Шаг 1: Перейдите в эту папку
Шаг 2: запустите эту командную строку:
Вы увидите ключ SHA-1.
Я непосредственно использовал следующую команду с моего Mac, используя terminal. У меня есть палец SHA1. Это команда:
Для получения SHA1 для производства ключей:
Создать —> Создать Подпись APK.
Создайте хранилище ключей с паролем и выполните следующие действия
Перейдите в свой Mac / библиотеку/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin и перетащите папку bin в команду terminal after cd, чтобы указать на нее, чтобы вы могли использовать инструмент keytool. Итак, в terminal напишите cd (перетащите сюда корзину), а затем нажмите enter.
Затем скопируйте и вставьте это в terminal:
Сотрите мой путь и перейдите туда, где вы хранили свое хранилище ключей, перетащите свой ключевой камень и поместите его после -keystore в командной строке, чтобы путь был создан.
Кроме того, сотрите Your_keystore_AliaseName, чтобы поместить свой псевдоним keystone name, который вы использовали при его создании.
Нажмите кнопку Enter и введите пароль 🙂
Когда вы вводите пароль, terminal не показывает, что он получает ввод с клавиатуры, но на самом деле это так, поэтому введите пароль и нажмите Enter , даже если вы не видите, что пароль набран.
Если вы используете Android Studio, вы можете получить отпечаток сертификата SHA-1 и MD5 (debug, release. все типы сборок!!) быстро проходят через Gradle задачу :
Сертификаты SHA-1 и MD5 отображаются в журналах сообщений .
Плагин Android (настроенный в приложении Gradle) создает режим отладки по умолчанию.
Файл путь к хранилищу ключей:
Я рекомендую прикрепить debug.keystore к build.gradle . Для этого поместите файл debug.keystore в папку приложения, а затем добавьте SigningConfigs в приложение Gradle:
Дополнительно: если вы хотите создать приложение для выпуска, поместите файл release.keystore в папку приложения. (В этом примере используется тот же debug.keystore .)
Это очень просто в Gnu / Linux — Mac — Windows
Во-первых: — скопируйте эту команду
Второе: теперь скопируйте и вставьте команду в terminal Android Studio
Результат!
Удачи!!
Если у вас есть Android Studio , то это очень просто. Просто создайте MapActivity с помощью Android Studio и после его создания перейдите в google_maps_api.xml. Там будет ссылка, данная в комментариях. Если вы вставите его в свой браузер, он попросит заполнить несколько деталей, и после этого будет сгенерирован ваш API. Нет никакой необходимости использовать keytool и все такое.
Это сработало в моем случае: используйте %USERPROFILE% вместо того, чтобы давать путь .keystore файлу, хранящемуся в этом пути автоматически C:Users/user name/.android :
Используйте простую команду:
ключей -exportcert -хранилище path-to-debug-or-production-keystore -список -в
и вы получите ключ SHA1.
Я хочу добавить одну вещь к ответу, данному Softcoder . Я видел, что некоторые люди не могли правильно указать свой путь debug.keystore на command line . Они видят, что они делают точный процесс, принятый выше, но он не работает. В этот момент попробуйте перетащить debug.keystore и поместить его в командную строку. Это поможет, если принятый ответ не работает для вас. Сделайте полный процесс без каких-либо колебаний. Это был хороший ответ.
Примечание: для debug.keystore пароль-«android». Хранилище ключей отладки обычно находится по адресу «%USER_PROFILE%»/.android/debug.keystore .
Я нашел очень простой процесс, чтобы найти вас MD5, SHA-1 отпечаток пальца с помощью Android Studio.
- Запустите свой проект
- Перейдите в меню Gradle (меню: Вид — > инструмент Windows — > Gradle)
- Перейдите к ‘signingReport’ в окне Gradle. (Ваш проект -> задачи -> android -> signingReport)
- Беги. (С помощью двойного щелчка или Ctrl + Shift + F10)
- В окне запуска вы найдете всю информацию.
Это работа только для режима отладки. В режиме realease я не вижу sha-1. Вот результат gradlew signingReport
Поэтому я должен использовать keytool, чтобы получить sha-1. Здесь официальный Firebase doc:
Нажмите на значок Gradle на правой панели, а затем нажмите на кнопку (root).
Задачи > android > signingReport
Затем скрипт Gradle будет выполнен, и вы увидите свои ключи.
Просто вызовите эти методы в вашей заставке: hash() и getCertificateSHA1Fingerprint(), а затем ключи будут видны в журнале
Перейдите в раздел файл > структура проекта Выберите app или mobile независимо от того, что вы дали имя из Modules
Выберите вкладку Signing .
Вы можете добавить сертификат, нажав на кнопку + .
Используйте инструкции от менеджера API с помощью keytool:
Получите имя пакета из вашего файла AndroidManifest.xml. Затем используйте следующую команду, чтобы получить отпечаток пальца:
keytool -list -v -keystore mystore.keystore
Это сработало для меня:
Поставьте path-to-debug-or-production-keystore здесь как C:\users\youruser.android\debug.keystore-list-v
Убедитесь, что вы уже находитесь в каталоге Java\jdk*\bin в окне команды или terminal.
Затем используйте Android в качестве пароля.
Иногда веб-ресурсы могут вводить в заблуждение. Это те, которые работают:
Похожие вопросы:
Я получил SHA1, используя это: Как получить сертификат отпечатка пальца SHA-1 в Android Studio для режима отладки? а потом я сделал настройку для сервиса google play, и все работает нормально. Когда.
Вот как это должно выглядеть Но вот как сейчас выглядит моя и я не знаю что случилось или что я сделал не так Когда я нажимаю на Gradle, вместо того, чтобы показать мне, что он показывает в.
Я новичок в Службе безопасности в Android .. Я пытаюсь получить sha1 отпечатка пальца сертификата подписи приложения android , Я хочу получить тот же результат cmd : keytool -v -list -keystore PATH.
При создании клиента ID для Android в консоли разработчика платформы Google Cloud я получаю следующее всплывающее окно: Дубликат отпечатка пальца Указанный вами отпечаток пальца уже используется.
Всего несколько дней назад я изменил свой отпечаток пальца SHA-1 (с подписи на dev) для тестирования. Теперь я хочу вернуться к подписанию SHA-1, но это не позволяет мне добавить живой отпечаток.
я разработчик android, и я получил проект от другого разработчика, который использовал сертификат отпечатка пальца SHA1 для отображения карты google, но я не хочу его использовать. кто-нибудь.
мой сайт https не проходит сканирование PCI из-за слабого отпечатка пальца сертификата SHA-1. Пожалуйста, смотрите прилагаемое изображение, изображающее отпечаток пальца SHA-1 непосредственно на.
Я сделал это приложение Android, которое извлекает некоторые данные с помощью платформы AI Training & Prediction API из платформы Google Cloud. Для того чтобы это приложение работало, оно должно.
Я пытаюсь получить сертификат отпечатка пальца SHA-1 для моего проекта Flutter. Обычно это можно сделать, войдя в Панель Gradle с правой стороны в Android Studio и нажав на signingReport . Проблема.
Источник