ここでは、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ビットを実行することを検討できます。