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
- 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();
- }
- }
- }
相关文章
- android基础---->音频和视频的使用
- 一个简单实用的Android调试应用技巧
- Android Framework学习之跨进程传递大图片
- 2021年Android开发者跳槽指南,大牛最佳总结
- 5分钟搞定!带你彻底搞懂Android启动速度优化!知乎上已获万赞
- Android开发者出路在哪?快来收藏!
- android 生成验证码图片
- 【Android进阶】Android面试题目整理与解说
- Android 自定义验证码/密码 输入框(内附demo)
- Android 高版本分享 分享图片 分享视频 分享当前apk
- android之frame动画详解
- Android NIO 系列教程(五) -- FileChannel
- Android 快速获取热点名称密码
- Flutter与Android iOS 的双向通信
- Android交互体验必知:功能按键事件
- Android 用代码查看本机保存的Wifi密码
- Android EditText 密码框默认是小圆点 怎么改成其它的(*)?
- React Native 控件之 Modal 详解 - Android/iOS 双平台通用
- 手势密码,纯JavaScript实现,支持iOS和Android
- Android一步一步剖析+实现仿支付宝手势密码自定义View