存儲加密的SharedPreferences項目時的附加值與僅存儲SharedPreferences項目相反。Android中的SharedPreferences的加密
我只將加密看作是一種緩解技術,因此用戶無法輕鬆操縱XML文件。
問題:加密vs明文SharedPreferences存儲?
存儲加密的SharedPreferences項目時的附加值與僅存儲SharedPreferences項目相反。Android中的SharedPreferences的加密
我只將加密看作是一種緩解技術,因此用戶無法輕鬆操縱XML文件。
問題:加密vs明文SharedPreferences存儲?
加密的用處取決於加密密鑰來自何處。
如果加密密鑰來自用戶(例如,源自用戶輸入的密碼短語),那麼值是任何試圖讀取XML中的數據的人都需要該密碼或解決嘗試暴力破解的問題,強制解密。
如果加密密鑰不是來自用戶,那麼值會降低。攻擊者(包括用戶)可以嘗試查找密鑰並找到加密算法。兩者都必須存在於設備上,否則應用程序無法解密數據(更不用說加密它)。在大多數簡單的情況下,例如將密鑰作爲常量存入應用程序,對於專家來說找到密鑰,查找算法並能夠解密數據並不需要太多工作。
你應該做的是這樣的:
加密輸入& 解密輸出。
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");
希望這會幫助你。
這不是我問過的。我的調查問卷與加密sharedpref時的附加值相關。項目。 – gillesC
@CommensWare如何使用Base64/ObscuredSharedPreferences?上述說法也適用於這兩個嗎? –
@ Mr.India:這將有資格獲得「加密密鑰不是來自用戶」的段落。 – CommonsWare