Android: Zaszyfruj hasło [duplikat]

Możliwy duplikat:
przechowywanie hasła

Używam preferencji współdzielonych do przechowywania hasła. Czy zapisywanie danych hasła jest bezpieczne, czy muszę je zaszyfrować przed zapisaniem. Proszę o pomoc z przykładowym kodem.

Z góry dzięki,

Author: Community, 2011-06-15

3 answers

Nigdy nie należy zapisywać hasła bezpośrednio, zamiast tego zapisać hash hasła.

 0
Author: Flo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-15 08:32:13

Krótka odpowiedź: jest Ładna bezpieczna.

Długa odpowiedź: po pierwsze, jeśli tworzysz aplikację, która pozwala użytkownikowi zalogować się do usługi internetowej / zdalnej, możesz zajrzeć do AccountManager. Jest trochę trudniej nauczyć się Api i zintegrować z nim, ale masz kilka fajnych korzyści:

  1. proste zarządzanie wieloma kontami(wszystkie konta są przechowywane w AccountManager).
  2. możliwość dodawania SyncAdapter s (i pisanie ich będzie ładne uproszczone, ponieważ AccountManager wywoła Twoje Adaptery z odpowiednim kontem-nie musisz ręcznie uruchamiać synchronizacji dla każdego konta).
  3. Twoja aplikacja pojawi się pod Settings > Accounts & sync.

Sprawdź przykładowy adapter synchronizacji w dokumentach -- pokazuje, jak używać AccountManager (możesz zignorować synchronizację, jeśli jej nie potrzebujesz).

Przejdźmy teraz do bezpieczeństwa przechowywania hasła (co następuje dotyczy zarówno przechowywania hasła w SharedPreferences, jak i w AccountManager). Tak długo jak urządzenie, na którym działa aplikacja, nie jest zakorzenione, jest całkowicie bezpieczne. Żadna inna aplikacja poza Twoim nie może odczytać hasła. Nie możesz nawet odczytać hasła, jeśli podłączysz telefon do komputera za pomocą kabla USB i użyj adb pull, aby spróbować pobrać odpowiedni plik.

Jeśli jednak telefon jest zakorzeniony, każda aplikacja, która uzyska dostęp do roota, może odczytać hasło. Ponadto, adb pull działa, a do hasła można dostać się w kilka sekund.

Z tego powodu zalecane jest szyfrowanie (szczególnie jeśli Twoja usługa internetowa / Chmura / zdalna przechowuje poufne dane). Używałem SimpleCrypto w moim ostatnim projekcie (razem z AccountManager) i działa całkiem nieźle. Jeśli się zastanawiasz, użyłem stałej dla "hasła głównego". Aby uzyskać dodatkowe bezpieczeństwo, zaciemniłem ostateczną kompilację (sprawdź jak ).

 26
Author: Felix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-15 08:53:26

Nie nigdy nie jest bezpieczne przechowywanie haseł w zwykłym tekście, pamiętasz, co się ostatnio stało z Sony?

Dowolna Technika szyfrowania java zrobi

 4
Author: Reno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:55