Android
सुरक्षित शेयर्डप्रिफरेंस
खोज…
परिचय
साझा प्राथमिकताएँ XML फ़ाइलों पर आधारित महत्वपूर्ण मान हैं । यह /data/data/package_name/shared_prefs/<filename.xml>
तहत स्थित है।
तो रूट विशेषाधिकार वाले उपयोगकर्ता इस स्थान पर नेविगेट कर सकते हैं और अपने मूल्यों को बदल सकते हैं। यदि आप अपनी साझा प्राथमिकताओं में मूल्यों की रक्षा करना चाहते हैं, तो आप एक सरल एन्क्रिप्शन और डिक्रिप्शन तंत्र लिख सकते हैं।
आपको कठिन पता होना चाहिए, कि साझा प्राथमिकताएं कभी सुरक्षित होने के लिए नहीं बनाई गई थीं, यह डेटा को जारी रखने का एक सरल तरीका है।
वाक्य - विन्यास
- सार्वजनिक स्थैतिक स्ट्रिंग एन्क्रिप्शन (स्ट्रिंग इनपुट);
- सार्वजनिक स्थैतिक स्ट्रिंग डिक्रिप्ट (स्ट्रिंग इनपुट);
पैरामीटर
पैरामीटर | परिभाषा |
---|---|
इनपुट | एन्क्रिप्ट या डिक्रिप्ट करने के लिए स्ट्रिंग मान। |
टिप्पणियों
साझा प्राथमिकताएं कभी भी सुरक्षित नहीं बनाई गई थीं, यह डेटा को बनाए रखने का एक सरल तरीका है।
उपयोगकर्ता क्रेडेंशियल जैसी महत्वपूर्ण जानकारी संग्रहीत करने के लिए साझा प्राथमिकताओं का उपयोग करना एक अच्छा विचार नहीं है। उपयोगकर्ता क्रेडेंशियल (जैसे पासवर्ड) को बचाने के लिए आपको 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);