-2

可能重复:
密码保护我的 android 应用程序(简单的方法)

编辑:

我在这里建立了我想要的东西:密码保护我的 android 应用程序(简单的方法)

老的

(我有一个名为passwordTextField在位于的文件中。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(隐藏字符)

允许用户取消或选择确定的按钮,并附加了点击监听器

要存储/获取密码,然后使用与此类似的东西而不是 sdcard 和 txt 文件从共享首选项获取密码,您也可以使用共享首选项编辑器来存储它。这增加了一点安全性,但不多

一般来说,您应该存储的不是密码本身,而是您应该真正存储一个令牌以增加安全性,这是一个可以为您做到这一点的类

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; 
    }
}

因此,当您单击确定按钮时存储密码

 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 回答