2016-07-13 12 views
2

私は自分のメールアカウントからアプリでメールを送信するためにlibを使用しています。問題は、暗号化された電子メールをクラスに入れる必要があることです。これを逆にして電子メールにアクセスするのは簡単すぎると思います。だから、私のアプリでパスワードを安全に保つのが最善の方法はどこですか?私はサーバーに何も保存するためのアクセス権を持っていません。アプリにパスワードを保存する方法

私が使用しているライブラリ:https://github.com/yesidlazaro/GmailBackground

+1

事は、私はまだSPを使用して保存するためのコードで私の暗号化されたパスを配置する必要があり、あるうーんSharedPreference –

答えて

3

あなたが暗号化をしたい場合は、するMessageDigestに見ることができます。彼らはあなたのパスワードを暗号化するための強力なハッシング機能を提供します。

https://developer.android.com/reference/java/security/MessageDigest.html

他の回答が指摘するような永続的SharedPreferences内ハッシュ化した後、パスワードや電子メールを保管してください。

https://developer.android.com/reference/android/content/SharedPreferences.html

+0

あなたはまたあなたのアンドロイドデバイス上のSQLLiteデータベース内にこれらを格納することができます。これはsharedPreferencesよりもはるかに効率的です。また、FTS3またはFTS4テーブルを作成した場合、電子メールをすばやく検索することができます:)これが役に立ちます。 – Kushan

+0

SharedPreferencesは安全ではありません。 –

+0

正確に私がSQLLiteを提案した理由:)また、MessageDigestはいくつかのハッシュアルゴリズムを提供しています。例えばSHA 256などです。解読技術の有無にかかわらず、解読するのはかなり難しいです。 – Kushan

2

はそれを暗号化する方法についてクシャンの答え@見..

をあなたが安全にSharedPreferences内に保存することができ、必要な時はいつでもあなたは常にそれを取り戻すことができますが、良い方法は、別の答えのコメントは、電話が根ざしているときSharedPreferencesが安全ではないことを示唆しただけのようにサーバでそれを格納することである。

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 

SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putString("password", ""); //put when you got your password here..... 
editor.commit(); 

BAそれを得ますで、必要なときにCKは:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
String password = sharedPref.getString("password", "noPass"); 
+0

で試してみてください...私は考えていた、おそらく私はパスを格納し、ユーザーが電子メールを送信するときに取得するためにfirebaseを使用することができます...? – Spotik

+0

はいいいアプローチですが、あなたはインターネットに依存していますので、他の機能を実行する必要がある場合は実行できません。しかし、ローカルデバイスにパスワードを保存しないことを強く推奨します。共有環境設定も危険です。@Spotik – TapanHP

+0

メールを送信するユーザーはインターネットに依存しているので、私はそれを確認しますか? – Spotik

2

SecurePerferecneは、ここでパスワードや機密情報 を格納するために使用されるデータを格納する方法である:

<map> 
<int name="timeout" value="500" /> 
<boolean name="is_logged_in" value="true" /> 
</map> 

暗号化されたデータ:

<map> 
    <string name="TuwbBU0IrAyL9znGBJ87uEi7pW0FwYwX8SZiiKnD2VZ7"> 
     pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=rroijgeWEGRDFSS/hg 
    </string> 
    <string name="8lqCQqn73Uo84Rj">k73tlfVNYsPshll19ztma7U"> 
     pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=:jWm8KzUl0HUHCVBWkn3c2T1WoSAE/g= 
    </string> 
</map> 

あなたは暗号化された環境設定のために別のファイルを定義することができます。

SharedPreferences prefs = new SecurePreferences(context, null, "my_custom_prefs.xml"); 

ストアユーザーパスワード:

SharedPreferences prefs = new SecurePreferences(context, "userpassword", "my_user_prefs.xml"); 

よりhere

+0

すでにupvoted urの答えは、私のための新しいことですが、どこで私はSecurePreferencesについてもっと知ることができますか? @Ra – TapanHP

+0

@Tapanparmar here https://github.com/scottyab/secure-preferences –

関連する問題