重複の可能性:
パスワードの保存
パスワードを保存するために共有設定を使用しています。パスワードデータをそのまま保存しても安全ですか、それとも保存する前に暗号化する必要がありますか。サンプルコードを手伝ってください。
前もって感謝します、
パスワードを直接保存しないでください。代わりに、パスワードのハッシュを保存してください。
簡単な答え:それはかなり安全です。
長い答え:まず、ユーザーがWeb /リモートサービスにログインできるようにするアプリケーションを作成している場合は、 AccountManager
を調べることをお勧めします。 APIを学び、それと統合するのは少し難しいですが、いくつかの素晴らしい利点があります。
AccountManager
に保存されます)。SyncAdapter
sを追加する機能(AccountManager
は適切なアカウントでアダプターを呼び出すため、書き込みはかなり簡単になります。各アカウントの同期を手動で実行する必要はありません) 。Settings > Accounts & sync
の下に表示されます。ドキュメントの サンプル同期アダプター を確認してください-AccountManager
の使用方法を示しています(同期のものが必要ない場合は無視してかまいません)。
次に、パスワードの保存の安全性について説明します(以下は、パスワードをSharedPreferences
とAccountManager
の両方に保存する場合に有効です)。アプリケーションが実行されているデバイスがルート化されていない限り、完全に安全です。他のアプリはありませんが、あなたのアプリがパスワードを読み取ることができます。 USBケーブルを使用して電話をPCに接続し、adb pull
を使用してそれぞれのファイルを取得しようとすると、パスワードを読み取ることさえできません。
ただし、電話がルート化されている場合、ルートアクセスを取得するすべてのアプリがパスワードを読み取ることができます。また、adb pull
は機能し、数秒でパスワードを取得できます。
このため、暗号化をお勧めします(特に、Web /クラウド/リモートサービスが機密データを保持している場合)。私は前回のプロジェクトで SimpleCrypto
を(AccountManager
と一緒に)使用しましたが、かなりうまく機能します。ご参考までに、「マスターパスワード」には定数を使用しました。セキュリティを強化するために、最終ビルドを難読化しました( 方法を確認してください )。
パスワードをプレーンテキストで保存することは決して安全ではありません。最近ソニーに何が起こったのか覚えていますか?
任意の Java暗号化技術 で十分です