转载https://blog.csdn.net/chenfengdejuanlian/article/details/46897537
在每个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();
- }
- }
- }