Ricerca…


introduzione

Le preferenze condivise sono file XML basati su valori-chiave . Si trova in /data/data/package_name/shared_prefs/<filename.xml> .

Quindi un utente con privilegi di root può navigare in questa posizione e può cambiarne i valori. Se si desidera proteggere i valori nelle preferenze condivise, è possibile scrivere un semplice meccanismo di crittografia e decrittografia.

Dovresti sapere che le preferenze condivise non sono mai state create per essere sicure, è solo un modo semplice per conservare i dati.

Sintassi

  1. public static String encrypt (String input);
  2. public static String decrypt (String input);

Parametri

Parametro Definizione
ingresso Valore stringa da crittografare o decrittografare.

Osservazioni

Le preferenze condivise non sono mai state create per essere sicure, è solo un modo semplice per mantenere i dati.

Non è una buona idea utilizzare le preferenze condivise per archiviare informazioni importanti come le credenziali dell'utente. Per salvare le credenziali dell'utente (come le password) è necessario utilizzare altri metodi come AccountManager di Android.

Protezione di una preferenza condivisa

Semplice codec

Qui per illustrare il principio di funzionamento possiamo usare la crittografia e la decifrazione semplici come segue.

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));
}

Tecnica di implementazione

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow