Android
Säkra delade föredrag
Sök…
Introduktion
Delade inställningar är nyckelvärdebaserade XML-filer . Det finns under / data / data / package_name / shared_prefs / <filename.xml>.
Så en användare med root-privilegier kan navigera till den här platsen och kan ändra dess värden. Om du vill skydda värden i dina delade preferenser kan du skriva en enkel krypterings- och dekrypteringsmekanism.
Du borde veta tufft att delade inställningar aldrig byggdes för att vara säkra, det är bara ett enkelt sätt att fortsätta data.
Syntax
- public static String encrypt (String input);
- public static String decrypt (String input);
parametrar
Parameter | Definition |
---|---|
inmatning | Strängvärde för att kryptera eller dekryptera. |
Anmärkningar
Delade inställningar byggdes aldrig för att vara säkra, det är bara ett enkelt sätt att fortsätta data.
Det är inte bra att använda delade inställningar för att lagra kritisk information som användaruppgifter. För att spara användaruppgifter (till exempel lösenord) måste du använda andra metoder som Android's AccountManager
.
Säkra en delad preferens
Enkel kodek
Här för att illustrera arbetsprincipen kan vi använda enkel kryptering och dekryptering enligt följande.
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));
}
Implementeringsteknik
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);