Szukaj…


Wprowadzenie

Wspólne preferencje to pliki XML oparte na klucz-wartość . Znajduje się w / data / data / nazwa_pakietu / shared_prefs / <nazwa_pliku.xml>.

Użytkownik z uprawnieniami administratora może więc nawigować do tej lokalizacji i zmieniać jej wartości. Jeśli chcesz chronić wartości we wspólnych preferencjach, możesz napisać prosty mechanizm szyfrowania i deszyfrowania.

Powinieneś wiedzieć, że wspólne preferencje nigdy nie zostały zbudowane w celu zapewnienia bezpieczeństwa, to tylko prosty sposób na utrwalenie danych.

Składnia

  1. publiczny statyczny Szyfrowanie ciągu znaków (wejście ciągu);
  2. publiczny statyczny deszyfrowanie ciągu (wejście ciągu);

Parametry

Parametr Definicja
Wejście Wartość ciągu do zaszyfrowania lub odszyfrowania.

Uwagi

Preferencje wspólne nigdy nie zostały stworzone w celu zapewnienia bezpieczeństwa, to tylko prosty sposób na utrwalenie danych.

Używanie wspólnych preferencji do przechowywania krytycznych informacji, takich jak poświadczenia użytkownika, nie jest dobrym pomysłem. Aby zapisać poświadczenia użytkownika (takie jak hasła), musisz użyć innych metod, takich jak AccountManager Androida.

Zabezpieczanie wspólnych preferencji

Prosty kodek

Aby zilustrować zasadę działania, możemy zastosować proste szyfrowanie i deszyfrowanie w następujący sposób.

public static String encrypt(String input) {
    // Simple encryption, not very strong!
    return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}

public static String decrypt(String input) {
    return new String(Base64.decode(input, Base64.DEFAULT));
}

Technika realizacji

public static String pref_name = "My_Shared_Pref";

// To Write
SharedPreferences preferences = getSharedPreferences(pref_name, MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(encrypt("password"), encrypt("my_dummy_pass"));
editor.apply(); // Or commit if targeting old devices

// To Read
SharedPreferences preferences = getSharedPreferences(pref_name, MODE_PRIVATE);
String passEncrypted = preferences.getString(encrypt("password"), encrypt("default_value"));
String password = decrypt(passEncrypted);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow