android实现数据的MD5加密并用SharedPreferences存储

概述

如果本地数据直接以明文的形式存储在手机上,是很不安全的。我们简单地谈谈MD5加密的java实现。

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。java封装了这种算法的实现。

下面是java代码的实现:

   public static  String encoder(String password){
            StringBuffer buffer;
            /** * 1,信息摘要器 */
            MessageDigest digest= null;
            try {
                digest = MessageDigest.getInstance("md5");
                /** * 2,变成byte数组 */
                byte bytes[]=digest.digest(password.getBytes());
                buffer=new StringBuffer();
                /** * 3,每个byte位与8个二进制数做与运算 */
                for(byte b:bytes){
                    int number=b & 0xff;
                    //int 类型转换为十六进制
                    String numberStr=Integer.toHexString(number);

                    if(numberStr.length()==1){
                        buffer.append("0");
                    }

                    buffer.append(numberStr);

                }
                return  buffer.toString();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return "";
            }

        }

实现了数据的加密,接下来就要实现数据的存储。在android中最常见的存储方式就是使用SharedPreferences和数据库。在这里我将SharedPreferences的用法封装成了一个类,如果在项目中多次使用,都要去实例化,多麻烦啊。

public class DataStore {

    public SharedPreferences sp;
    public Context context;
    {
        context=MyApplication.getContext();
        /** * 第一个参数相当于文件的名称,第二个参数表示操作模式,MODE_PRIVATE表示只有当前的应用程序可以访问, * MODE_MULTI_PROCESS则表示可以被多个进程操作。一般情况下,我们选择第一个作为操作模式的参数。 */
        sp=context.getSharedPreferences("config",context.MODE_PRIVATE);
    }

    /** * 写入字符串数据 * @param id * @param data */

    public void writeString(String id,String data){
        SharedPreferences.Editor editor=sp.edit();
        editor.putString(id,data);
        editor.commit();
    }

    /** * 读入字符串数据 * @param id * @return */
    public String getStringData(String id){
        /** * 第一个参数是存储数据时设置的id,第二个参数表示如果你要取出的数据不存在(比如你传的id就不存在,数据当然就不存在了), * 返回的值 */
        String data=sp.getString(id,"");
        return data;
    }
}

这里用到了全局的Context,所以需要自定义一个Application。

public class MyApplication extends Application {

    public static Context context;

    public static Context getContext(){
        return context;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context=getApplicationContext();
    }
}

自定义的Application一定要在清单文件中进行说明,在application标签下,添加:

 android:name="utitls.MyApplication"

关于SharedPreferences存储数据,这里是以字符串为例的。当然也可以存储整型和布尔类型的数据。

转眼间,国庆假期就马上结束了,时光匆匆!

    原文作者:佳亮
    原文地址: https://blog.csdn.net/zahngjialiang/article/details/52749463
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞