Suche…


Einführung

Gemeinsame Einstellungen sind auf Schlüsselwerten basierende XML-Dateien . Es befindet sich unter /data/data/package_name/shared_prefs/<filename.xml> .

So kann ein Benutzer mit root-Berechtigungen zu diesem Speicherort navigieren und seine Werte ändern. Wenn Sie die Werte in Ihren gemeinsamen Einstellungen schützen möchten, können Sie einen einfachen Verschlüsselungs- und Entschlüsselungsmechanismus schreiben.

Sie sollten wissen, dass Shared Preferences niemals sicher erstellt wurden. Es ist nur eine einfache Methode, um Daten zu speichern.

Syntax

  1. public static String encrypt (String-Eingabe);
  2. public static String decrypt (Zeicheneingabe);

Parameter

Parameter Definition
Eingang Stringwert zum Verschlüsseln oder Entschlüsseln.

Bemerkungen

Gemeinsame Einstellungen wurden nie als sicher erstellt, es ist nur eine einfache Methode, um Daten zu erhalten.

Es ist keine gute Idee, gemeinsam genutzte Voreinstellungen zum Speichern kritischer Informationen wie Benutzeranmeldeinformationen zu verwenden. Um Benutzeranmeldeinformationen (z. B. Kennwörter) zu speichern, müssen Sie andere Methoden verwenden, beispielsweise den AccountManager Android.

Sichern einer gemeinsamen Einstellung

Einfacher Codec

Um das Funktionsprinzip zu veranschaulichen, können wir die einfache Ver- und Entschlüsselung wie folgt verwenden.

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

Implementierungstechnik

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow