2016-01-12 19 views

Odpowiedz

7

Próbka FingerprintDialog przewidzianych w Android próbek jest nieco gęsty więc niech rozbić to, co się dzieje:

  1. Konfiguruj i generowania kluczy kryptograficznych. W tym kroku możesz określić, że Klucz może być użyty tylko wtedy, gdy KeyGenParameterSpec.Builder.setAuthenticated(true).
  2. Inicjalizuje Cipher obiekt z cipherMode (szyfrowania/odszyfrowywania) i klucza wygenerowanego z Etapu 1
  3. Inicjalizuje FingerprintCrypto.CryptoObject() z szyfru z etapu 2
  4. Rozpocząć czytnik odcisku i przechodzą w CryptoObject z etapu 3 przez dzwoniąc pod numer FingerprintManager.authenticate()
  5. Użytkownik pomyślnie dokonuje uwierzytelnienia za pomocą odcisku palca. System operacyjny Android ustawi bit "uwierzytelniony" w kluczu od 0 do 1.
  6. Teraz, gdy klucz został uwierzytelniony do użycia, można go użyć do wykonania dowolnej operacji kryptograficznej, dzwoniąc pod numer Cipher.doFinal().

Jeśli spróbujesz zmodyfikować krok 4 przekazując w null do FingerprintManager.authenticate(), następnie krok 6 nie powiedzie się, ponieważ nie zostały uwierzytelnione użyć klucza.

Nadzieję, że pomaga.

+1

Przede wszystkim bardzo dziękuję za pomoc. W odniesieniu do kroku 1 zakładałem, że masz na myśli 'KeyGenParameterSpec.Builder.setUserAuthenticationRequired (boolean required)'. Próbowałem wcześniej przekazać wartość zerową w kroku 4. Tym razem spróbowałem ustawić krok 1 na false i mogłem wywołać 'Cipher.doFinal()' z wynikiem zwróconym nawet przed uwierzytelnieniem odcisków palców. Klucz nie ma nic wspólnego z przepływem uwierzytelnienia odcisków palców, jest tylko częścią przykładowego kodu, który demonstruje sposób uwierzytelnienia użycia klucza. –

+0

Ale inne pytanie brzmi: dlaczego muszę uwierzytelniać klucz, który sam utworzę w ramach tego samego programu? –

+1

Domyślnie klawisze w magazynie kluczy mogą być używane bez uwierzytelniania. Jeśli wywołasz setUserAuthenticationRequired z wartością true, musisz użyć odcisku palca, aby użyć klucza. –

Powiązane problemy