استفاده از Shared Preferences خیلی راحت و آسونه و برای برنامه نویس های تنبلی مثل من یک تهدید حساب میشه ! چرا ؟ اطلاعات شخصی کاربر ها برای خودشون خیلی مهمه و هرگونه نفوذ به این اطلاعات میتونه فاجعه به بار بیار , هکر ها با ترفند هایی میتونن به این Shared Preferences ما دسترسی پیدا کنن و برای اون فاجعه قدمی بردارن
پس تا وقتی Shared Preferences ما امن نباشه و رمزنگاری نشده باشه یجورایی میشه گفت که بی فایدست , بیاید با چند مثال بهتون توضیح بدم :
خب اول من میام همونجوری که همیشه از Shared Preferences استفاده میکردم کلاسش رو ساختم و دیتایی که در اپلیکیشن ذخیره شد به صورت زیر کاملا نمایان شد :
همونطور که دیدید کاملا من میتونم به اطلاعات ذخیره شده دسترسی پیدا کنم و ببینم چه value با چه key ذخیره شده
خب حالا راه حل چیه ؟
مشکل ما با استفاده از EncryptedSharedPreferences حل میشه , EncryptedSharedPreferences دقیقا تمامی کارایی که parent خودش SharedPreferences انجام میده رو به همون صورت انجام میده ولی به صورت رمزنگاری شده و هیچ نفر سومی نمیتونه به این اطلاعات دسترسی پیدا کنه و اگه هم پیدا کنه هیچی ازش نمیفهمه چون رمزنگاری شدست.
توجه : EncryptedSharedPreferences برای SDK 23 به بالاست ! و برای اندروید lollipop به پایین باید همون پیشفرض رو استفاده کنید
به Build.Gradle App Level اضافه کنید
//app level build.gradle file implementation "androidx.security:security-crypto:1.0.0-alpha02"
خب ما این کلاس رو میسازیم و این کد هارو داخلش مینویسیم :
طریقه استفاده ازش هیچ فرقی با همون پیشفرض خودش نمیکنه استفاده از این روش فقط برای رمزنگاری دیتا ها برای امن کردن دیتا هست
اگه به عکس زیر توجه کنید متوجه میشید که دیتایی که ذخیره کردیم کاملا رمزنگاری شده , شما میتونید از خود Device file explorer اندروید استویو به این فایل دسترسی پیدا کنید :
فکر کنم با مقایسه عکس قبل با عکس بالا میتونید به تفاوت های چشمگیری دست پیدا میکنید
خب اینجا یک نکته هست :
به سایز های فایل ها توجه کنید ! تقریبا ده برابر شده و این باعث میشه پرفورمنس برنامه یکم بیاد پایین پس سعی کنید از EncryptedSharedPreferences برای دیتا های خاص و حساس استفاده کنید !
فایل رو داخل گیت گذاشتم میتونید استفاده کنید :
مقاله های قبلی من :