iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android登录时密码保护功能
  • 273
分享到

Android登录时密码保护功能

Android 2022-06-06 04:06:18 273人浏览 八月长安
摘要

在很多的Android项目中都需要用户登录、注册。这样的话在开发中做好保护用户密码的工作就显得尤为重要。这里我把自己的密码保护方法记录下来。 这是我建了一个保存密码的文件,以便

在很多的Android项目中都需要用户登录、注册。这样的话在开发中做好保护用户密码的工作就显得尤为重要。这里我把自己的密码保护方法记录下来。

这是我建了一个保存密码的文件,以便于检查自己保存密码或者上传到服务器的时候密码是否已经被保护了。这就是当我输入用户名和密码之后点击记住密码之后

保存在SD卡上的文件,打开之后可以明显的看到密码已经被保护了。

下面是我的布局文件以及主程序的代码:


<RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#E6E6E6"
  android:orientation="vertical">
  <ImageView 
   android:id="@+id/iv_head"
   android:layout_width="150dp"
   android:layout_height="150dp"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="40dp"
   android:src="@drawable/ic_launcher"/>
  <LinearLayout 
   android:id="@+id/layout"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_below="@+id/iv_head"
   android:layout_margin="10dp"
   android:background="#FFFFFF"
   android:orientation="vertical">
   <RelativeLayout 
    android:id="@+id/rl_username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">
    <TextView 
     android:id="@+id/tv_name"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerVertical="true"
     android:text="账号"/>
    <EditText 
     android:id="@+id/et_number"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginLeft="5dp"
     android:layout_toRightOf="@+id/tv_name"
     android:background="@null"/>
   </RelativeLayout>
   <View 
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#E6E6E6"/>
   <RelativeLayout 
    android:id="@+id/rl_userpsd"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">
    <TextView 
     android:id="@+id/tv_psw"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerVertical="true"
     android:text="密码"/>
    <EditText 
     android:id="@+id/et_passWord"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginLeft="5dp"
     android:layout_toRightOf="@+id/tv_psw"
     android:inputType="textPassword"
     android:background="@null"/>
   </RelativeLayout>
  </LinearLayout>
  <Button 
   android:id="@+id/login"
   android:onClick="login"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:layout_below="@+id/layout"
   android:layout_centerHorizontal="true"
   android:layout_marginLeft="10dp"
   android:layout_marginRight="10dp"
   android:layout_marginTop="20dp"
   android:background="#3C8DC4"
   android:text="登录"
   android:textColor="#FFFFFF"/>
  <Button 
   android:id="@+id/signUp"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="注册"
   android:background="#E6E6E6"
   android:textColor="#000000"
   android:layout_marginTop="21dp"
   android:layout_centerHorizontal="true"
   android:layout_marginRight="10dp"
   android:layout_below="@+id/login"
   android:layout_alignParentRight="true"/>
  <CheckBox
   android:id="@+id/save"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignBaseline="@+id/signUp"
   android:layout_alignBottom="@+id/signUp"
   android:layout_alignLeft="@+id/login"
   android:layout_marginLeft="14dp"
   android:text="记住密码" />
</RelativeLayout>

package com.itcast.test03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlGorithmException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFORMEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.JSON.jsONArray;
import org.json.JSONObject;
import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.annotation.Targetapi;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
 private EditText et_username;
 private EditText et_userPsd;
 private Button login;
 private Button signUp;
 private CheckBox save;
 private String user,pass;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);
  et_username = (EditText)findViewById(R.id.et_number);
  et_userPsd = (EditText)findViewById(R.id.et_password);
  login=(Button)findViewById(R.id.login);
  signUp=(Button)findViewById(R.id.signUp);
  save = (CheckBox)findViewById(R.id.save);
  save.setOnClickListener(new CheckBox.OnClickListener(){
   public void onClick(View v) {
    SharedPreferences pre = getSharedPreferences("loginvalue",
             MODE_WORLD_WRITEABLE);
    pass = MD5( et_userPsd.getText().toString());
    user = et_username.getText().toString();
    if (!pass.equals("") && !user.equals("")) {
       pre.edit().putString("username",
         et_username.getText().toString())
         .putString("password", encryptmd5(pass)).commit();
    Toast.makeText(getApplicationContext(),"保存成功!",
    Toast.LENGTH_SHORT).show();
    } else{
    Toast.makeText(getApplicationContext(),"密码不能为空!",
    Toast.LENGTH_LONG).show();
  }
    }
  });
  login.setOnClickListener(new Button.OnClickListener() {
   @Override
   public void onClick(View v) {
   SharedPreferences sp = getSharedPreferences("loginvalue",MODE_WORLD_READABLE);
   String loginuser = sp.getString("username",null);
   String loginpass = sp.getString("password",null);
   user = et_username.getText().toString();
   pass = et_userPsd.getText().toString();
   String paSSMd5 = MD5(pass);
   String encryptmd5 = encryptmd5(passmd5);
   System.out.println("username="+ loginuser
   + "-------------password="+ loginpass);
   System.out.println("user=="+ user
   + "-------------encryptmd5=="+ encryptmd5);
   if (!user.equals("") && !pass.equals("")) {
   if (user.equals(loginuser) && encryptmd5.equals(loginpass)) {
   Intent intent = new Intent();
   intent.setClass(MainActivity.this, StudentMainActivity.class);
   MainActivity.this.startActivity(intent);
   finish();
   } else{
   Toast.makeText(getApplicationContext(),"密码是错误的!",
   Toast.LENGTH_LONG).show();
   }
   } else{
   Toast.makeText(getApplicationContext(),"密码不能为空!",
   Toast.LENGTH_LONG).show();
   }
   }
   });
  initWidget();//
  }
 private void initWidget()
 {
  login.setOnClickListener(this);
  signUp.setOnClickListener(this);
  et_username.setOnFocusChangeListener(new OnFocusChangeListener()
  {
   @Override
   public void onFocusChange(View v, boolean hasFocus) {
    // TODO Auto-generated method stub
    if(!hasFocus){
     String username=et_username.getText().toString().trim();
     if(username.length()<4){
      Toast.makeText(MainActivity.this, "用户名不能小于4个字符", Toast.LENGTH_SHORT);
     }
    }
   }
  });
  et_userPsd.setOnFocusChangeListener(new OnFocusChangeListener()
  {
   @Override
   public void onFocusChange(View v, boolean hasFocus) {
    // TODO Auto-generated method stub
    if(!hasFocus){
     String password=et_userPsd.getText().toString().trim();
     if(password.length()<4){
      Toast.makeText(MainActivity.this, "密码不能小于4个字符", Toast.LENGTH_SHORT);
     }
    }
   }
  });
 }
 public void onClick(View v) {
  // TODO Auto-generated method stub
  switch(v.getId())
  {
  case R.id.login:
   if(checkEdit())
   {
    login();
   }   
   break;
  case R.id.signUp:
   Intent intent2=new Intent(MainActivity.this,SignUp.class);
   startActivity(intent2);
   break;
  }
 }
 private boolean checkEdit(){
  if(et_username.getText().toString().trim().equals("")){
   Toast.makeText(MainActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show();
   Intent intent=new Intent(MainActivity.this,StudentMainActivity.class);
   startActivity(intent);
  }else if(et_userPsd.getText().toString().trim().equals("")){
   Toast.makeText(MainActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show();
  }else{
   return true;
  }
  return false;
 }
 private void login(){
  //这个网址需要改动
  String httpUrl="http://192.168.1.102:8080/WEB-test/login.jsp";
  HttpPost httpRequest=new HttpPost(httpUrl);
  List<NameValuePair> params=new ArrayList<NameValuePair>();
  params.add(new BasicNameValuePair("username",et_username.getText().toString().trim()));
  params.add(new BasicNameValuePair("password",et_userPsd.getText().toString().trim()));
  HttpEntity httpentity = null;
  try {
   httpentity = new UrlEncodedFormEntity(params,"utf8");
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  httpRequest.setEntity(httpentity);
  HttpClient httpclient=new DefaultHttpClient();
  HttpResponse httpResponse = null;
  try {
   httpResponse = httpclient.execute(httpRequest);
  } catch (ClientProtocolException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  if(httpResponse.getStatusLine().getStatusCode()==200)
  {
   String strResult = null;
   try {
    strResult = EntityUtils.toString(httpResponse.getEntity());
   } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   Toast.makeText(MainActivity.this, strResult, Toast.LENGTH_SHORT).show();
   Intent intent=new Intent(MainActivity.this,StudentMainActivity.class);
   startActivity(intent);
  }
  else
  {
   Toast.makeText(MainActivity.this, "登录失败!", Toast.LENGTH_SHORT).show();
  }
 }
 public static String MD5(String str){ 
  MessageDigest md5 = null; 
 try {
  md5 = MessageDigest.getInstance("MD5");
 } catch (NoSuchAlgorithmException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  return "";
 }
  char[] charArray = str.toCharArray();
  byte[] byteArray = new byte[charArray.length];
  for (int i = 0; i < charArray.length; i++) {
  byteArray[i] = (byte)charArray[i];
 }
  byte[] md5Bytes = md5.digest(byteArray);
  StringBuffer hexValue = new StringBuffer();
  for (int i = 0; i < md5Bytes.length; i++) {
  int val = ((int)md5Bytes[i])&0xff;
  if(val<16){
   hexValue.append("0");
  }
  hexValue.append(Integer.toHexString(val));
 }
  return hexValue.toString();  
 }
 public static String encryptmd5(String str){
  char[] a = str.toCharArray();
  for (int i = 0; i < a.length; i++) {
  a[i] = (char)(a[i]^'1');
 }
  String s = new String(a);
  return s;
 }
 }

添加权限:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

您可能感兴趣的文章:Android 开发仿简书登录框可删除内容或显示密码框的内容Android设计登录界面、找回密码、注册功能在Nginx用htpasswd对网站进行密码保护的设置方法页面使用密码保护代码设置密码保护的sqlServer数据库备份文件与恢复文件的方法Android开发之登录验证实例教程Android集成新浪微博第三方登录的方法Android开发之注册登录方法示例Android实现登录功能demo示例Android调用第三方QQ登录代码分享


--结束END--

本文标题: Android登录时密码保护功能

本文链接: https://www.lsjlt.com/news/22559.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android登录时密码保护功能
    在很多的Android项目中都需要用户登录、注册。这样的话在开发中做好保护用户密码的工作就显得尤为重要。这里我把自己的密码保护方法记录下来。 这是我建了一个保存密码的文件,以便...
    99+
    2022-06-06
    Android
  • 华为云服务器登录界面怎么设置密码保护功能
    华为云服务器登录界面的密码保护功能需要使用华为云服务器的密码管理器来实现。以下是一个步骤简化的设置方法: 登录华为云服务器管理后台:登录华为云服务器管理后台后,您会看到如下界面: 设置密码保护:在这里,您可以选择使用用户名和密码方式来登...
    99+
    2023-10-26
    华为 保护功能 界面
  • Android 使用SharedPreferrences储存密码登录界面记住密码功能
    Android存储方式有很多种,在这里所用的存储方式是SharedPreferrences, 其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入。所以比较...
    99+
    2022-06-06
    界面 Android
  • 华为云服务器登录界面怎么设置密码保护功能呢
    华为云服务器登录界面可以通过设置密码保护功能来增加服务器的安全性。下面是设置密码保护功能的步骤: 登录华为云控制台,选择“云服务器 ECS”。 在 ECS 管理页面中,选择需要设置密码保护的云服务器实例,点击“更多”按钮,选择“安全组”...
    99+
    2023-10-26
    华为 保护功能 界面
  • 轻量应用服务器登录界面怎么设置密码保护功能
    轻量应用服务器登录界面通常是以密码保护为主题的,以下是一些可能需要考虑的设置密码保护功能的方法: 设置登录选项:在应用的登录界面中可以设置多个密码保护选项,比如使用密码锁定功能、使用密码重置功能等,以确保只有登录者才能访问应用的功能。 ...
    99+
    2023-10-26
    保护功能 界面 密码
  • 华为云服务器登录界面在哪里设置密码保护功能
    华为云服务器登录界面的密码保护功能可以在控制台中进行设置。具体步骤如下: 登录华为云控制台,进入云服务器 ECS 管理页面。 在 ECS 管理页面中,选择需要设置密码保护的云服务器实例,点击实例名称进入详情页面。 在详情页面中,选择“安...
    99+
    2023-10-26
    华为 保护功能 界面
  • 如何进行 mysql_config_editor/login-path 登录密码保护
    如何进行 mysql_config_editor/login-path 登录密码保护,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。login-path是MySQL5.6开始支持...
    99+
    2023-06-06
  • 腾讯云服务器如何使用登录方式设置密码保护功能
    首先,在腾讯云服务器的控制台上打开“登录/注销”功能。 在登录页面输入您要登录的用户名和密码,点击“登录”按钮。 如果您想要更改默认的登录密码,请选择“更改密码”选项。 在输入框中输入您的新密码,然后点击“确认”按钮。 您的新密码将替换原...
    99+
    2023-10-28
    腾讯 如何使用 保护功能
  • 轻量应用服务器登录界面在哪里设置密码保护功能
    轻量应用服务器登录界面可以使用Web管理界面进行设置,下面是一些可能需要考虑的地方: 密码保护页面:登录界面应该提供一个用户名和密码输入页面,以便客户端在需要登录时可以随时进行输入或更改密码。密码保护页面应该遵循最少密码长度的原则,并提...
    99+
    2023-10-26
    保护功能 界面 密码
  • 云服务器远程登录短信提醒怎么设置密码保护功能
    首先,需要开启短信提醒功能。可以在手机设置中找到“应用程序管理”选项,或者在应用商店中搜索该应用程序并下载安装; 点击“设定”按钮,进入设定界面,再点击“账户与安全”选项; 找到“短信验证”选项,输入需要的密码,并点击“确定”; 此时系统...
    99+
    2023-10-27
    保护功能 密码 短信
  • Android设计登录界面、找回密码、注册功能
    本文实例为大家分享了Android 登录、找回密码、注册功能的实现代码,供大家参考,具体内容如下 1.数据库的设计 我在数据库中添加了两张表,一张表用来存储用户信息,诸如用户名...
    99+
    2022-06-06
    找回密码 界面 Android
  • Android开发保存QQ密码功能
    本文实例为大家分享了Android保存QQ密码功能的具体代码,供大家参考,具体内容如下 技术要点: 使用文件储存的方式保存数据 实现步骤: ①用户交互界面的设计与实现②工具类(Fil...
    99+
    2022-11-13
  • Android中怎么实现登录记住多个密码功能
    这篇文章将为大家详细讲解有关Android中怎么实现登录记住多个密码功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在popouWindow里面加上ListView,数据是把List以字符...
    99+
    2023-05-31
    android
  • Android怎么开发保存QQ密码功能
    本文小编为大家详细介绍“Android怎么开发保存QQ密码功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么开发保存QQ密码功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。技术要点:使用文件...
    99+
    2023-06-30
  • Android大作业功能设计之自动登录和记住密码
    目录前言一、效果二、设计思路三、知识点介绍SharedPreferenced四、自动登录及记住密码实现总结与补充前言 大家好,我是oy,今天介绍一下在登录页面中如何实现自动登录及记住...
    99+
    2023-01-28
    Android自动登录 Android记住密码 Android大作业
  • 云服务器怎么设置密码保护功能
    云服务器的密码保护功能通常由密码生成器和密码重置功能组成。密码生成器可以自动生成复杂的密码,并将其保存在云服务器中。用户可以通过登录云服务器控制台来访问密码生成器,输入正确的密码并进行密码重置。密码重置功能可以帮助用户轻松找回忘记的密码,避...
    99+
    2023-10-28
    保护功能 密码 服务器
  • 亚马逊云服务器加密:设置密码保护功能
    1. 了解亚马逊云服务器加密 亚马逊云服务器(Amazon EC2)是一种强大的云计算服务,可以帮助用户轻松创建和管理虚拟服务器。为了确保数据的安全性,亚马逊云服务器提供了多种加密选项,其中包括密码保护功能。 2. 创建亚马逊云服务器 首...
    99+
    2023-10-27
    亚马逊 保护功能 密码
  • flask框架实现修改密码和免密登录功能
    目录修改密码功能免密登录修改密码功能 数据库部分: #重置密码 def reset_pass(phone,password): conn,cursor=get_conn(...
    99+
    2022-11-12
  • 如何关闭亚马逊服务器登录密码保护模式
    1. 登录到亚马逊 Web 服务控制台 首先,打开您的浏览器并访问亚马逊 Web 服务(AWS)控制台。输入您的凭据(用户名和密码)并登录到您的 AWS 帐户。 2. 导航到 IAM 控制台 在 AWS 控制台的顶部菜单栏中,找到并点击 ...
    99+
    2023-10-27
    亚马逊 密码保护 模式
  • 华为云服务器登录界面怎么设置密码保护
    华为云服务器登录界面需要输入账户和密码才能登录,以下是一些可能有用的设置密码保护: 选择云服务提供商:选择适合你需要的云计算服务提供商,以确保您的账户和密码都是正确的。 输入账户信息:确保您正确输入了账户信息,包括名称、密码、用户名和密...
    99+
    2023-10-26
    华为 密码保护 界面
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作