zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 使用MD5对SharedPreferences密码进行加密

Android密码密码加密 进行 MD5 sharedpreferences 使用
2023-09-27 14:29:04 时间

转载https://blog.csdn.net/chenfengdejuanlian/article/details/46897537   

在每个Android软件都会使用到SharedPreferences,将密码保存在本地,但是由于没有对密码进行加密,只要用户对手机进行root,获取了权限就很容易得到密码,为了防止密码外露,每个Android软件都要对SharedPreferences的密码进行加密。

在Android中提供了MD5加密,下面就对MD5加密进行一个测试,先创建一个MD5工具类

MD5Utils.java

[java]  view plain  copy
  1. package cn.edu.cqu.mobilesafe.utils;  
  2.   
  3. import java.security.MessageDigest;  
  4. import java.security.NoSuchAlgorithmException;  
  5.   
  6. public class MD5Utils {  
  7.       
  8.     public static String md5Password(String password){  
  9.         StringBuffer sb = new StringBuffer();  
  10.         // 得到一个信息摘要器  
  11.         try {  
  12.             MessageDigest digest = MessageDigest.getInstance("md5");  
  13.             byte[] result = digest.digest(password.getBytes());  
  14.             // 把每一个byte做一个与运算 0xff  
  15.             for (byte b : result) {  
  16.                 // 与运算  
  17.                 int number = b & 0xff;  
  18.                 String str = Integer.toHexString(number);  
  19.                 if (str.length() == 1) {  
  20.                     sb.append("0");  
  21.                 }  
  22.                 sb.append(str);  
  23.             }  
  24.         } catch (NoSuchAlgorithmException e) {  
  25.             e.printStackTrace();  
  26.         }  
  27.         return sb.toString();  
  28.     }   
  29.   
  30. }  
在主界面上创建一个输入密码的布局文件

[html]  view plain  copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <EditText  
  8.         android:id="@+id/et_password"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:inputType="textPassword"  
  12.         android:hint="请输入密码" />  
  13.     <EditText  
  14.         android:id="@+id/et_confirm_pwd"  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:inputType="textPassword"  
  18.         android:hint="请重新输入密码" />  
  19.     <Button   
  20.         android:onClick="click"  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="wrap_content"  
  23.         android:text="确定"/>  
  24.   
  25. </LinearLayout>  

在java文件中实现方法

[java]  view plain  copy
  1. package com.example.md5test;  
  2.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.content.SharedPreferences;  
  6. import android.content.SharedPreferences.Editor;  
  7. import android.text.TextUtils;  
  8. import android.view.Menu;  
  9. import android.view.View;  
  10. import android.widget.EditText;  
  11. import android.widget.Toast;  
  12.   
  13. public class MainActivity extends Activity {  
  14.   
  15.     private EditText et_password;  
  16.     private EditText et_confirm_pwd;  
  17.     private SharedPreferences sp;  
  18.   
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.           
  24.         et_password = (EditText) findViewById(R.id.et_password);  
  25.         et_confirm_pwd = (EditText) findViewById(R.id.et_confirm_pwd);  
  26.         sp = getSharedPreferences("config", MODE_PRIVATE);  
  27.     }  
  28.       
  29.     public void click(View v){  
  30.         String password = et_password.getText().toString().trim();  
  31.         String password_confirm = et_confirm_pwd.getText().toString().trim();  
  32.         System.out.println(password +"---"+password_confirm);  
  33.         if (TextUtils.isEmpty(password) || TextUtils.isEmpty(password_confirm)) {  
  34.             Toast.makeText(this"密码不能为空!"0).show();  
  35.             return;  
  36.         }else {  
  37.             Editor editor = sp.edit();  
  38.             editor.putString("password", MD5Utils.md5Password(password));  
  39.             editor.commit();  
  40.             Toast.makeText(this"密码保存成功!"0).show();  
  41.         }  
  42.     }  
  43. }  
输入密码12345,加密之后的效果



点击下载源码