-2

重複
の可能性:Androidアプリを保護するパスワード(簡単な方法)

編集:

私はここで欲しいものを見つけました:私のAndroidアプリを保護するパスワード(簡単な方法)

(私はTextFieldという名前を持っていますpassword。ユーザーが正しいパスワード123を入力した場合、ボタンをクリックすると、ユーザーは別のアクティビティに移動します。間違ったパスワードが入力された場合、などのメッセージ"Wrong password!"が表示されます。実際のパスワード自体が見つかります。にあるファイル内/sdcard/Android/password.txt

どうすればそのような機能を作成できますか?)

4

2 に答える 2

0

おそらく、最初にAndroidについて少し読んで、初心者向けのチュートリアルを作成する必要があります。

これは、フィールドを取得してコンテンツにアクセスする方法を示しています:http: //developer.android.com/training/basics/firstapp/building-ui.html

これは、アクティビティの変更に関する知識を提供するはずです: http ://developer.android.com/training/basics/firstapp/starting-activity.html

于 2012-06-22T15:11:22.010 に答える
0

ここでは、UI、セキュリティなどの多くの領域をカバーする必要があるため、実行する必要のある手順の概要を簡単に説明します。

UIのアクティビティまたはダイアログが必要です。初期パスワードを取得し、パスワードを確認する必要があります。

パスワード属性セットを使用するTextView(文字を非表示)

ユーザーがクリックリスナーを接続して[OK]をキャンセルまたは選択できるボタン

パスワードを保存/取得するには、sdcardとtxtファイルの代わりにこれに似たものを使用します。共有設定からパスワードを取得するには、共有設定エディターを使用してパスワードを保存することもできます。これにより、セキュリティは少し追加されますが、それほど多くはありません

一般に、保存する必要があるのはパスワード自体ではありませんが、セキュリティを強化するために実際にトークンを保存する必要があります。これを実行できるクラスが1つあります。

import java.security.MessageDigest;

public class PasswordToken {

    static public String makeDigest(String password) 
    {
         String hexStr = "";

        try {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.reset();
            byte[] buffer = password.getBytes();
            md.update(buffer);
            byte[] digest = md.digest();


            for (int i = 0; i < digest.length; i++) {
                hexStr +=  Integer.toString( ( digest[i] & 0xff ) + 0x100, 16).substring( 1 );

        } 
        } catch(Exception e) // If the algo is not working for some reason on this device
                             // we have to use the strings hash code, which 
                             // could allow duplicates but at least allows tokens
        {
            hexStr = Integer.toHexString(password.hashCode()); 
        }

        return hexStr;
    }

    static public boolean validate(String password, String token) 
    {
         String digestToken = "";
         String simpleToken = "";

         digestToken = makeDigest(password);

         if (0 == digestToken.compareTo(token)) 
             return true; 

         if (0 == simpleToken.compareTo(token))
             return true;

         return false; 
    }
}

したがって、[OK]ボタンをクリックしたときにパスワードを保存するには

 PasswordTextView.getText();
  String token = PasswordToken.makeDigest(password);
  //... store TOKEN using the shared preferences editor 

ユーザーがログインしたいときにパスワードを確認するには

PasswordTextView.GetText();
  String token = PasswordToken.makeDigest(password);
  //... GET token using the shared preferences 

  if (PasswordToken.validate(token))
     Start your new activity
  else
     tell your user to try again 

startActivityまたはstartActivityForResultを使用して別のアクティビティを開始し、DialogクラスをオーバーライドしてUIビットを実行することを検討できます。

于 2012-06-22T15:13:31.217 に答える