Buscar..


Introducción

Las preferencias compartidas son archivos XML basados ​​en valores clave . Se encuentra en /data/data/package_name/shared_prefs/<filename.xml> .

Por lo tanto, un usuario con privilegios de root puede navegar a esta ubicación y puede cambiar sus valores. Si desea proteger los valores en sus preferencias compartidas, puede escribir un mecanismo simple de cifrado y descifrado.

Debe tener en cuenta que las Preferencias Compartidas nunca fueron diseñadas para ser seguras, es solo una forma simple de conservar los datos.

Sintaxis

  1. Cifrado de cadena estática pública (entrada de cadena);
  2. Descifrado de cadenas públicas estáticas (entrada de cadenas);

Parámetros

Parámetro Definición
entrada Valor de cadena para cifrar o descifrar.

Observaciones

Las preferencias compartidas nunca se crearon para ser seguras, es solo una forma simple de conservar los datos.

No es una buena idea usar preferencias compartidas para almacenar información crítica, como las credenciales de usuario. Para guardar las credenciales de usuario (como las contraseñas), debe utilizar otros métodos, como el AccountManager de Android.

Asegurar una preferencia compartida

Codec simple

Aquí, para ilustrar el principio de funcionamiento, podemos usar cifrado y descifrado simples de la siguiente manera.

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

Técnica de Implementación

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow