在每个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做一个与运算 0xfffor (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" ><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPassword"android:hint="请输入密码" /><EditTextandroid: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;@Overrideprotected 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 使用MD5对SharedPreferences密码进行加密相关推荐

  1. java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密

    如何在JAVA中使用MD5加密对密码进行加密 发布时间:2020-11-25 17:12:40 来源:亿速云 阅读:118 作者:Leah 本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行 ...

  2. C#中使用MD5对用户密码加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...

  3. java中字符串 MD5密码的加密与验证

    java中字符串 MD5密码的加密与验证   MD5即Message-Digest Algorithm 5(信息-摘要 算法 5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译 摘要 ...

  4. 使用MD5对用户密码加密与解密

    MD5简介 : MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展 ...

  5. android apk md5加密工具,Android实现简单MD5加密的方法

    本文实例讲述了Android实现简单MD5加密的方法.分享给大家供大家参考,具体如下: 网上关于android下MD5加密的资料很多,但是测试了下总是跟网站的md5加密不一样, 后来才知道是编码方式不 ...

  6. Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...

  7. 将 Shiro 作为应用的权限基础 五:密码的加密/解密在Spring中的应用

    2019独角兽企业重金招聘Python工程师标准>>> 考虑系统密码的安全,目前大多数系统都不会把密码以明文的形式存放到数据库中. 一把会采取以下几种方式对密码进行处理 密码的存储 ...

  8. 如何保证用户登陆时提交密码已经加密

    如何保证用户登陆时提交密码已经加密?密码是否已加密,需要客户端和服务端建立约定,双方按约定办事就行了. 这里提到的另一个问题是,如何保证传输安全? 最理想的方案当然是走 HTTPS 协议. HTTPS ...

  9. android中wifi输入的密码保存的路径

    2019独角兽企业重金招聘Python工程师标准>>> android设备输入wifi密码后即能连上wifi,就能上网了,但是我们输入的wifi的密码保存在哪个地方呢? 如果要查看系 ...

最新文章

  1. ADPRL - 近似动态规划和强化学习 - Note 10 - 蒙特卡洛法和时序差分学习及其实例 (Monte Carlo and Temporal Difference)
  2. sql报表按月统计_如何通过INTOUCH组态软件做EXCEL报表(含代码)
  3. 推荐计算机与通信领域SCI期刊,因子稳中看升,对中国作者友好,毕业优选!
  4. 妹子每天加班1分钟,半年崩溃!向公司索赔55万!
  5. Vue:开发者友好性和易用性
  6. cfiledialog 保存 扩展名_吃不完的红薯很难保存?教你一招,放1年不烂不发芽,简单实用...
  7. CPU 漏洞补丁对内核性能影响:4.15 比 4.11 快 7-9%
  8. python函数 range()和arange()
  9. android同花顺布局,同花顺首发 Android平板电脑炒股高清版
  10. vue 引入字体图标显示方块
  11. 进下流行移动开发框架对比
  12. 华为p9 android,华为p9 emui5.0怎么退回emui4.1 华为P9系统降级教程
  13. 虎从风跃,龙借云行--神行者Wi10无线移动硬盘开启WIFI无线存储共享新时代_MID论坛_太平洋电脑网产品论坛...
  14. 联发科MT6893怎么样 联发科MT6893参数配置
  15. python假设产品列表如下_Python.习题五 列表与元组(上)
  16. 七年级上册英语第三单元单词课文翻译
  17. Elasticsearch的基本使用
  18. WEB前端浏览器兼容性问题(PC端及移动端)
  19. 经济应用文写作【2】
  20. 720不能建立远程计算机连接,上网拨号提示“错误720:不能建立到远程计算机的连接”的解决方法...

热门文章

  1. c语言位运算_C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
  2. 软件工程模块开发卷宗_软件智能化再进一步,未来人人都能开发软件?
  3. UML 类图几种关系的总结
  4. 编码 / Base 64
  5. 今天同大家聊一下Git扩展
  6. java 取字符的ascii_如何用java获得字符串的ASCII值
  7. Android studio java文件显示变为红色J
  8. python正则表达式指南_Python正则表达式指南(转)
  9. 操作系统学习(五) 、代码段和数据段描述符
  10. FFmpeg在Linux下编译使用