Android
セキュアなSharedPreferences
サーチ…
前書き
共有プリファレンスは、 キー値ベースのXMLファイルです 。 / data / data / package_name / shared_prefs / <filename.xml>の下にあります。
root権限を持つユーザーはこの場所に移動し、その値を変更することができます。共有環境設定の値を保護したい場合は、簡単な暗号化と復号化メカニズムを作成できます。
共有環境設定は決して安全のために構築されたものではなく、データを保持するための簡単な方法です。
構文
- public static String encrypt(ストリング入力);
- public static String decrypt(ストリング入力);
パラメーター
パラメータ | 定義 |
---|---|
入力 | 暗号化または復号化する文字列値。 |
備考
共有設定は安全に構築されたことはなく、データを保持するための単純な方法です。
ユーザーの資格情報などの重要な情報を格納するための共有プリファレンスを使用することはお勧めできません。ユーザーの資格情報(パスワードなど)を保存するには、AndroidのAccountManager
などの他の方法を使用する必要があります。
共有設定を保護する
シンプルコーデック
ここでは、動作原理を説明するために、単純な暗号化と復号化を以下のように使用できます。
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));
}
実装方法
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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow