• 写了个SharedPreferences的工具类(带加密)


    /*
     * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com )
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package fyc.framework.util;
    
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    
    import android.annotation.TargetApi;
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.preference.PreferenceManager;
    import android.support.v4.util.ArrayMap;
    import android.text.TextUtils;
    
    /**
     * SharePreferences Tool
     * 
     * @author Jason Fang
     * @datetime 2014年12月5日 下午5:28:22
     */
    public class PrefsUtils {
        static final boolean DEBUG = true;
        
        private static final String SECURITY_KEY = "iJasonfang";
        
        /**
         * Put Value
         * 
         * @param context
         * @param key
         * @param value
         * @return
         */
        public static boolean putValue(Context context, String key, Object value) {
            return putValue(context, null, key, value);
        }
        
        public static boolean putValue(Context context, String key, Object value, boolean[] keyValueEncrypt) {
            return putValue(context, null, key, value, keyValueEncrypt);
        }
        
        public static boolean putValue(Context context, String name, String key, Object value) {
            return putValue(context, name, key, value, new boolean[]{true, true});
        }
        
        public static boolean putValue(Context context, String name, String key, Object value, boolean[] keyValueEncrypt) {
            return putValue(context, name, key, value, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        public static boolean putValue(Context context, String name, String key, Object value, int mode, boolean[] keyValueEncrypt) {
            ArrayMap<String, Object> map = new ArrayMap<String, Object>();
            map.put(key, value);
            return putValue(context, name, map, keyValueEncrypt);
        }
        
        public static boolean putValue(Context context, String name, Map<String, Object> map, boolean[] keyValueEncrypt) {
            return putValue(context, name, map, Context.MODE_PRIVATE, keyValueEncrypt);
        }
    
        @TargetApi(11)
        @SuppressWarnings("unchecked")
        public static boolean putValue(Context context, String name, Map<String, Object> map, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
            
            Editor editor = preferences.edit();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = keyValueEncrypt[0] ? SecurityUtils.MD5(entry.getKey()) : entry.getKey();
                Object value = entry.getValue();
                
                if (keyValueEncrypt[1] && !(value instanceof Set)) {
                    editor.putString(key, SecurityUtils.DESencrypt(String.valueOf(value), SECURITY_KEY));
                } else {
                    if (value instanceof Boolean) {
                        editor.putBoolean(key, Boolean.parseBoolean(String.valueOf(value)));
                    } else if (value instanceof Float) {
                        editor.putFloat(key, Float.parseFloat(String.valueOf(value)));
                    } else if (value instanceof Integer) {
                        editor.putInt(key, Integer.parseInt(String.valueOf(value)));
                    } else if (value instanceof Long) {
                        editor.putLong(key, Long.parseLong(String.valueOf(value)));
                    } else if (value instanceof String) {
                        editor.putString(key, String.valueOf(value));
                    } else if (value instanceof Set) {
                        if (keyValueEncrypt[1]) {
                            Set<String> sets = (Set<String>)value;
                            Set<String> tempSets = new HashSet<String>();
                            for (String s : sets) {
                                tempSets.add(SecurityUtils.DESencrypt(String.valueOf(s), SECURITY_KEY));
                            }
                            editor.putStringSet(key, tempSets);
                        } else {
                            editor.putStringSet(key, (Set<String>)value);
                        }
                    } else {
                        throw new IllegalArgumentException("Value type is not support!");
                    }
                }
            }
            return editor.commit();
        }
        
        /**
         * Remove Key
         * @param context
         * @param key
         */
        public static boolean removeKey(Context context, String key) {
            return removeKey(context, null, key);
        }
        
        public static boolean removeKey(Context context, String name, String key) {
            return removeKey(context, name, key, false);
        }
        
        public static boolean removeKey(Context context, String name, String key, boolean isKeyEncrypt) {
            return removeKey(context, name, key, Context.MODE_PRIVATE, isKeyEncrypt);
        }
        
        public static boolean removeKey(Context context, String name, String key, int mode, boolean isKeyEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
            
            Editor editor = preferences.edit();
            editor.remove(isKeyEncrypt ? SecurityUtils.DESencrypt(key, SECURITY_KEY) : key);
            return editor.commit();
        }
        
        /**
         * Get String
         * 
         * @param context
         * @param key
         * @param defValue
         * @return
         */
        public static String getString(Context context, String key, String defValue) {
            return getString(context, null, key, defValue);
        }
        
        public static String getString(Context context, String name, String key, String defValue) {
            return getString(context, name, key, defValue, Context.MODE_PRIVATE, new boolean[]{true, true});
        }
        
        public static String getString(Context context, String name, String key, String defValue, boolean[] keyValueEncrypt) {
            return getString(context, name, key, defValue, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        public static String getString(Context context, String name, String key, String defValue, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
            
            String value = preferences.getString(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValue);
            if (value.equals(defValue)) {
                return value;
            } else {
                return keyValueEncrypt[1] ? SecurityUtils.DESdecrypt(value, SECURITY_KEY) : value;
            }
        }
        
        /**
         * Get Int
         * 
         * @param context
         * @param key
         * @param defValue
         * @return
         */
        public static int getInt(Context context, String key, int defValue) {
            return getInt(context, null, key, defValue);
        }
        
        public static int getInt(Context context, String name, String key, int defValue) {
            return getInt(context, name, key, defValue, new boolean[]{true, true});
        }
        
        public static int getInt(Context context, String name, String key, int defValue, boolean[] keyValueEncrypt) {
            return getInt(context, name, key, defValue, Context.MODE_PRIVATE, keyValueEncrypt);
        }
    
        public static int getInt(Context context, String name, String key, int defValue, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
    
            if (keyValueEncrypt[1]) {
                String value = getString(context, name, key, String.valueOf(defValue), mode, keyValueEncrypt);
                try {
                    return Integer.valueOf(value);
                } catch (Exception e) {
                    return defValue;
                }
            } else {
                return preferences.getInt(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValue);
            }
        }
        
        /**
         * Get Long
         * 
         * @param context
         * @param key
         * @param defValue
         * @return
         */
        public static long getLong(Context context, String key, long defValue) {
            return getLong(context, null, key, defValue);
        }
        
        public static long getLong(Context context, String name, String key, long defValue) {
            return getLong(context, name, key, defValue, new boolean[]{true, true});
        }
        
        public static long getLong(Context context, String name, String key, long defValue, boolean[] keyValueEncrypt) {
            return getLong(context, name, key, defValue, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        public static long getLong(Context context, String name, String key, long defValue, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
    
            if (keyValueEncrypt[1]) {
                String value = getString(context, name, key, String.valueOf(defValue), mode, keyValueEncrypt);
                
                try {
                    return Long.valueOf(value);
                } catch (Exception e) {
                    return defValue;
                }
            } else {
                return preferences.getLong(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValue);
            }
        }
        
        /**
         * Get Float
         * 
         * @param context
         * @param key
         * @param defValue
         * @return
         */
        public static float getFloat(Context context, String key, float defValue) {
            return getFloat(context, null, key, defValue);
        }
        
        public static float getFloat(Context context, String name, String key, float defValue) {
            return getFloat(context, name, key, defValue, new boolean[]{true, true});
        }
        
        public static float getFloat(Context context, String name, String key, float defValue, boolean[] keyValueEncrypt) {
            return getFloat(context, name, key, defValue, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        public static float getFloat(Context context, String name, String key, float defValue, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
    
            if (keyValueEncrypt[1]) {
                String value = getString(context, name, key, String.valueOf(defValue), mode, keyValueEncrypt);
                try {
                    return Float.valueOf(value);
                } catch (Exception e) {
                    return defValue;
                }
            } else {
                return preferences.getFloat(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValue);
            }
            
        }
        
        /**
         * boolean
         * 
         * @param context
         * @param key
         * @param defValue
         * @return
         */
        public static boolean getBoolean(Context context, String key, boolean defValue) {
            return getBoolean(context, null, key, defValue);
        }
        
        public static boolean getBoolean(Context context, String name, String key, boolean defValue) {
            return getBoolean(context, name, key, defValue, new boolean[]{true, true});
        }
        
        public static boolean getBoolean(Context context, String name, String key, boolean defValue, boolean[] keyValueEncrypt) {
            return getBoolean(context, name, key, defValue, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        public static boolean getBoolean(Context context, String name, String key, boolean defValue, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
            
            if (keyValueEncrypt[1]) {
                String valueString = getString(context, name, key, String.valueOf(defValue), mode, keyValueEncrypt);
                try {
                    return Boolean.valueOf(valueString);
                } catch (Exception e) {
                    return defValue;
                }
            } else {
                return preferences.getBoolean(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValue);
            }
        }
        
        /**
         * StringSet
         * 
         * @param context
         * @param key
         * @param defValues
         * @return
         */
        public static Set<String> getStringSet(Context context, String key, Set<String> defValues) {
            return getStringSet(context, null, key, defValues);
        }
        
        public static Set<String> getStringSet(Context context, String name, String key, Set<String> defValues) {
            return getStringSet(context, name, key, defValues, new boolean[]{true, true});
        }
        
        public static Set<String> getStringSet(Context context, String name, String key, Set<String> defValues, boolean[] keyValueEncrypt) {
            return getStringSet(context, name, key, defValues, Context.MODE_PRIVATE, keyValueEncrypt);
        }
        
        /**
         * @param context
         * @param name
         * @param key
         * @param defValues
         * @param mode
         * @return
         */
        @TargetApi(11)
        public static Set<String> getStringSet(Context context, String name, String key, Set<String> defValues, int mode, boolean[] keyValueEncrypt) {
            SharedPreferences preferences = null;
            if (TextUtils.isEmpty(name)) {
                preferences = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                preferences = context.getSharedPreferences(name, mode);
            }
            Set<String> valueSet = preferences.getStringSet(keyValueEncrypt[0] ? SecurityUtils.MD5(key) : key, defValues);
            Set<String> tempValueSet = new HashSet<String>();
            for (String s : valueSet) {
                tempValueSet.add(SecurityUtils.DESdecrypt(s, SECURITY_KEY));
            }
            return tempValueSet;
        }
        
        private PrefsUtils(){/*Do not new me*/};
    }

     加密工具类!

    /*
     * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com )
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package fyc.framework.util;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.UnsupportedEncodingException;
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.SecureRandom;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;
    import javax.crypto.spec.DESedeKeySpec;
    
    import android.annotation.SuppressLint;
    import android.text.TextUtils;
    import android.util.Base64;
    
    /**
     * 加密工具类
     * @description 
     * @author Jason Fang
     * @created 2013年10月31日
     */
    public class SecurityUtils {
        static final boolean DEBUG = true;

    /** * MD5 * @param srcString * @return */ public static String MD5(String srcString) { if (TextUtils.isEmpty(srcString)) { throw new IllegalArgumentException("srcString cannot be null!"); } try { return MD5(srcString.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { return ""; } } public static String MD5(byte[] srcBytes) { if (srcBytes == null) { throw new IllegalArgumentException("bytes cannot be null!"); } try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(srcBytes); byte[] bytes = md.digest(); int i = 0; StringBuffer buffer = new StringBuffer(""); for (int offset = 0; offset < bytes.length; offset++) { i = bytes[offset]; if (i < 0) { i += 256; } if (i < 16) { buffer.append("0"); } buffer.append(Integer.toHexString(i)); } return buffer.toString(); } catch (Exception e) { if (DEBUG) Flog.e(e); } return ""; } /** * @param dataSource * @param password * @return */ public static String DESencrypt(String dataSource, String password) { return ConvertUtils.parseBytesToHexString(DESencrypt(dataSource.getBytes(), password)); } /** * @param data * @param password * @return */ public static String DESdecrypt(String data, String password) { byte[] bytes = DESdecrypt(ConvertUtils.parseHexStringToBytes(data), password); if (bytes == null) { return ""; } return new String(bytes); } private SecurityUtils() {/*Do not new me*/}; }

     ConvertUtils 

    /*
     * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com )
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package fyc.framework.util;
    
    import java.io.UnsupportedEncodingException;
    import java.text.NumberFormat;
    import java.util.Arrays;
    import java.util.Map;
    import java.util.Set;
    
    import android.content.Context;
    import android.content.res.Resources;
    import android.text.TextUtils;
    import android.util.TypedValue;
    
    /**
     * 转换工具集
     * @author Jason Fang
     * @datetime 2014年11月23日 上午11:22:25
     */
    public class ConvertUtils {
        static final boolean DEBUG = false;
    /** * byte[] to String * @param bytes * @return */ public static String parseBytesToHexString(byte[] bytes) { if (bytes == null) return ""; StringBuffer sb = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { String x16 = Integer.toHexString(bytes[i]); if (x16.length() < 2) { sb.append("0" + x16); } else if (x16.length() > 2) { sb.append(x16.substring(x16.length() - 2)); } else { sb.append(x16); } } return sb.toString(); } /** * String to byte[] * @param intString * @return */ public static byte[] parseHexStringToBytes(String intString) { if (TextUtils.isEmpty(intString)) return null; if (intString.length() % 2 == 1) { intString = "0" + intString; } byte[] bytes = new byte[intString.length() / 2]; try { for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte)Integer.parseInt(intString.substring(i * 2, i * 2 + 2), 16); } if (DEBUG) Flog.i("===parseStringToBytes===" + bytes.toString()); return bytes; } catch (Exception e) { Flog.e(e); return null; } }
    }
    欢迎分享转载,转载请注明出处 http://www.cnblogs.com/fangyucun
  • 相关阅读:
    rals gb2312编码
    义乌给力电子商务有限公司招聘网络推广专员
    [PHP]APACHE模块化安装PHP以及MySQL 配置@Windows(PHP5)
    wordpress将远程数据下载一份到本地20110228操作过程记录
    百万邮件群发业务
    Ruby 读写文件
    万网备案专题
    新ubuntu配置过程记录
    wordpress将远程数据下载一份到本地20110228操作过程记录
    万网备案专题
  • 原文地址:https://www.cnblogs.com/fangyucun/p/4250599.html
Copyright © 2020-2023  润新知