2014-01-12 64 views
0

我只想問是否在SharedPreferences中存儲密碼(加密)是一個好主意。 在Android中,您可以刪除應用程序的sharedPredPref,然後密碼不見了,所以最好將它存儲在像sqlite這樣的數據庫中?在我的應用程序中,我將它保存在sharedPref中,所以當第一次啓動一個活動時,他必須設置一個新的密碼。現在的問題是,別人可以刪除sharedPreferences然後他會再次詢問設置一個新的密碼。Android SharedPreferences密碼

+0

Arent你更關心密碼的安全性比刪除它的人 –

+0

Sry我沒有正確解釋它。我有一個活動,用戶可以把它放在例如一些筆記或其他東西。這些註釋存儲在sqlite中。該活動受密碼保護。所以如果用戶第一次啓動應用程序,他必須設置一個新密碼才能訪問該活動。但是如果其他人想訪問它,他只需要刪除sharedPred,然後他會被要求重新設置一個新密碼,而不知道舊密碼。如果我將密碼存儲在數據庫中,並且數據庫被刪除,則所有註釋都將被刪除,因此用戶不能看到它們。 – androidBeginner

回答

0

如果您唯一的擔心是有人可能會刪除偏好xml文件,那麼將它們存儲在SQLite中將沒有什麼區別。因爲在清除應用程序的數據時,這兩項都會被刪除。

+0

當從設置中清除應用程序的數據時,sqlite數據庫不會被刪除。 – pyus13

+0

嗯,開發時我總是使用清除數據清除數據庫,我不確定數據庫是否會被刪除,但其中的數據將被擦除100%。 – VM4

+0

@androidBeginner更好地添加解釋的問題本身而不是評論。所以它會有助於其他人回答。 – pyus13

0

使用MODE_PRIVATE在共享偏好,所以沒有人能除了您的應用程序

SharedPreferences prefs= getSharedPreferences("yourpasspreference", MODE_PRIVATE); 

更好地保存密碼之類的話以加密的形式訪問它。

爲了保護您可以使用此設置清除數據您的清單

<application android:label="MyApp" android:icon="@drawable/icon" 
      android:manageSpaceActivity=".ActivityOfMyChoice"> 

將禁用設置清除數據按鈕,空間管理按鈕將改爲顯示其啓動由您定義的ActivityOfMyChoice活動。

1

在android SharedPreferences以及SQLite都被清除時,在應用程序屏幕上按下Clear data按鈕。所以沒有什麼區別!

在這種情況下,用戶將在第一次啓動應用程序時被註銷。最終身份驗證應始終發生在服務器端,而不是在應用程序內部。