Android 使用MD5对SharedPreferences密码进行加密
2015-07-15 19:35
477 查看
在每个Android软件都会使用到SharedPreferences,将密码保存在本地,但是由于没有对密码进行加密,只要用户对手机进行root,获取了权限就很容易得到密码,为了防止密码外露,每个Android软件都要对SharedPreferences的密码进行加密。
在Android中提供了MD5加密,下面就对MD5加密进行一个测试,先创建一个MD5工具类
MD5Utils.java
在java文件中实现方法
![](http://img.blog.csdn.net/20150715200528283?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击下载源码
在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,加密之后的效果
点击下载源码
相关文章推荐
- Android图片浏览器之图片删除
- android菜鸟学习笔记26----Android广播消息及BroadcastReceiver
- android 视图getParent,getChildAt
- android studio 更新 Gradle错误解决方法
- ArrayAdapter中的android.R.id.text1是什么
- 辗转到了Android
- Android Intents with Chrome
- Android 录音
- Android 你应该知道的学习资源 进阶之路贵在坚持
- android MediaRecorder 与 AudioRecord 差异
- Android在ListView滑动数据混乱
- Android - Launcher Icon Size
- Android系统匿名共享内存Ashmem
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Android系统的定制
- Android ImageView.ScaleType说明
- Android:Layout_weight的深刻理解
- 如何提高Android应用启动速度,避免启动时黑屏太久
- Android 文字竖排效果
- Android ExpandableListView的使用