3

存儲加密的SharedPreferences項目時的附加值與僅存儲SharedPreferences項目相反。Android中的SharedPreferences的加密

我只將加密看作是一種緩解技術,因此用戶無法輕鬆操縱XML文件。

問題:加密vs明文SharedPreferences存儲?

回答

1

加密的用處取決於加密密鑰來自何處。

如果加密密鑰來自用戶(例如,源自用戶輸入的密碼短語),那麼值是任何試圖讀取XML中的數據的人都需要該密碼或解決嘗試暴力破解的問題,強制解密。

如果加密密鑰不是來自用戶,那麼值會降低。攻擊者(包括用戶)可以嘗試查找密鑰並找到加密算法。兩者都必須存在於設備上,否則應用程序無法解密數據(更不用說加密它)。在大多數簡單的情況下,例如將密鑰作爲常量存入應用程序,對於專家來說找到密鑰,查找算法並能夠解密數據並不需要太多工作。

+0

@CommensWare如何使用Base64/ObscuredSharedPreferences?上述說法也適用於這兩個嗎? –

+0

@ Mr.India:這將有資格獲得「加密密鑰不是來自用戶」的段落。 – CommonsWare

-1

你應該做的是這樣的:

加密輸入& 解密輸出。

public String encrypt(String input) { 
    return Base64.encodeToString(input.getBytes(), Base64.DEFAULT); 
} 

public String decrypt(String input) { 
    return new String(Base64.decode(input, Base64.DEFAULT)); 
} 

如何閱讀&寫入/到Sharedpreference。

寫:

SharedPreferences preferences = getSharedPreferences("prefs_title", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString(encrypt("password"), encrypt("MyPassword")); 
editor.apply(); 

閱讀:

SharedPreferences preferences = getSharedPreferences("prefs_title", MODE_PRIVATE); 
String pass = preferences.getString(decrypt("password"), "default"); 

希望這會幫助你。

+0

這不是我問過的。我的調查問卷與加密sharedpref時的附加值相關。項目。 – gillesC