2012-06-22 26 views
-2

可能重复:
Password protecting my android app (the simple way)创建密码验证我的Android应用程序

编辑:

我创办了什么,我想在这里:Password protecting my android app (the simple way)

(我有一个名为password的TextField。如果用户输入正确的密码123,点击一个按钮后,我希望用户转到其他活动。如果输入了错误的密码,则应显示消息,如"Wrong password!"。实际密码本身位于/sdcard/Android/password.txt的文件中。 ?

如何创建这样的功能)

回答

0

您需要涵盖了很多地面UI,安全等,所以我会简要介绍一下你需要完成的步骤。

您需要为UI的活动或dialogs,得到一个初始密码,并检查密码都应该有使用设置密码属性(隐藏人物)

按钮(一个或多个)

的TextView允许用户取消或选择确定与点击听众连接

要存储/获取密码,然后使用类似于这个而不是sdcard和txt文件Getting a password from shared preferences,您可以使用共享首选项编辑器来存储它。这增添了几分安全的,但没有太大的

一般来说你应该存储是不是密码本身,而是你应该存储令牌为增加安全性,这里是一个类,它可以为你做

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 or startActivityForResult启动另一个活动,并查看过滤Dialog类以执行UI位。

+0

是的!我找到了我需要的! – user1475122