package Ġcom . iti . fi ery Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . security . keystore . Key Gen Parameter Spec Ċ import Ġandroid . security . keystore . Key Properties Ċ import Ġandroidx . security . crypto . Encrypted SharedPreferences Ċ import Ġandroidx . security . crypto . Master Key Ċ import Ġjava . io . File ĊĊ Ċ internal Ġclass ĠShared Prefs Repo ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġshared Preferences : ĠSharedPreferences ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStep Ġ 1 : ĠCreate Ġor Ġretrieve Ġthe ĠMaster ĠKey Ġfor Ġencryption / de cryption ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= ĠKey Gen Parameter Spec . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaster Key . DEFAULT _ MASTER _ KEY _ ALIAS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Properties . P URPOSE _ ENCRYPT Ġor ĠKey Properties . P URPOSE _ DE CRYPT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Block Modes ( Key Properties . BLOCK _ MODE _ GCM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Encryption P add ings ( Key Properties . ENCRYPT ION _ P ADDING _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Key Size ( Master Key . DEFAULT _ AES _ GCM _ MASTER _ KEY _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġmaster Key Ġ= ĠMaster Key . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Key Gen Parameter Spec ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠStep Ġ 2 : ĠInitialize / open Ġan Ġinstance Ġof ĠEn crypted SharedPreferences ĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= ĠEn crypted SharedPreferences . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSP _ FILE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaster Key , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Key Encryption Scheme . AES 2 5 6 _ SI V , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Value Encryption Scheme . AES 2 5 6 _ GCM ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġsave String ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġread String ( key : ĠString ) Ġ= Ġshared Preferences . getString ( key , ĠSP _ DEFAULT _ VALUE ) ĊĊĠĠĠ Ġinternal Ġfun Ġdelete SharedPreferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠFile ( context . files Dir . parent Ġ+ Ġ"/ shared _ prefs /") ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġdir . list () ĊĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġchildren ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclear Ġeach Ġpreference Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( SP _ FILE _ NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// delete Ġthe Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( dir , Ġchild ). delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġconst Ġval ĠSP _ DEFAULT _ VALUE Ġ= Ġ" default _ value " Ċ internal Ġconst Ġval ĠSP _ FILE _ NAME Ġ= Ġ" secret _ shared _ preferences " Ċ internal Ġconst Ġval ĠE MAIL Ġ= Ġ" email " Ċ internal Ġconst Ġval ĠPASSWORD Ġ= Ġ" password "