您的位置:首页 > 移动开发 > Android开发

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

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

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

MD5Utils.java

package cn.edu.cqu.mobilesafe.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {

public static String md5Password(String password){
StringBuffer sb = new StringBuffer();
// 得到一个信息摘要器
try {
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] result = digest.digest(password.getBytes());
// 把每一个byte做一个与运算 0xff
for (byte b : result) {
// 与运算
int number = b & 0xff;
String str = Integer.toHexString(number);
if (str.length() == 1) {
sb.append("0");
}
sb.append(str);
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return sb.toString();
}

}
在主界面上创建一个输入密码的布局文件

<LinearLayout 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:orientation="vertical" >

<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请输入密码" />
<EditText
android:id="@+id/et_confirm_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请重新输入密码" />
<Button
android:onClick="click"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确定"/>

</LinearLayout>


在java文件中实现方法

package com.example.md5test;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_password;
private EditText et_confirm_pwd;
private SharedPreferences sp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

et_password = (EditText) findViewById(R.id.et_password);
et_confirm_pwd = (EditText) findViewById(R.id.et_confirm_pwd);
sp = getSharedPreferences("config", MODE_PRIVATE);
}

public void click(View v){
String password = et_password.getText().toString().trim();
String password_confirm = et_confirm_pwd.getText().toString().trim();
System.out.println(password +"---"+password_confirm);
if (TextUtils.isEmpty(password) || TextUtils.isEmpty(password_confirm)) {
Toast.makeText(this, "密码不能为空!", 0).show();
return;
}else {
Editor editor = sp.edit();
editor.putString("password", MD5Utils.md5Password(password));
editor.commit();
Toast.makeText(this, "密码保存成功!", 0).show();
}
}
}
输入密码12345,加密之后的效果



点击下载源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: