Android加密之Md5,AES 加密

来源:互联网 发布:七匹狼网络营销策划书 编辑:程序博客网 时间:2024/05/07 18:05

1、Md5加密

public final static String Md5Encry(String s) {          char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',                  'a', 'b', 'c', 'd', 'e', 'f' };          try {              byte[] strTemp = s.getBytes();              MessageDigest mdTemp = MessageDigest.getInstance("MD5");              mdTemp.update(strTemp);              byte[] md = mdTemp.digest();              int j = md.length;              char str[] = new char[j * 2];              int k = 0;              for (int i = 0; i < j; i++) {                  byte byte0 = md[i];                  str[k++] = hexDigits[byte0 >>> 4 & 0xf];                  str[k++] = hexDigits[byte0 & 0xf];              }              return new String(str);          } catch (Exception e) {              e.printStackTrace();              return null;          }      }  

2、AES加、解密

/** AES对称加密解密类 **/public class AESHelper {    /** 算法/模式/填充 **/    private static final String CipherMode = "AES/ECB/PKCS5Padding";    private static final String key="秘钥";    /** 创建密钥 **/    private static SecretKeySpec createKey(String password) {        byte[] data = null;        if (password == null) {            password = "";        }        StringBuffer sb = new StringBuffer(32);        sb.append(password);        while (sb.length() < 32) {            sb.append("0");        }        if (sb.length() > 32) {            sb.setLength(32);        }        try {            data = sb.toString().getBytes("UTF-8");        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return new SecretKeySpec(data, "AES");    }    /** 加密字节数据 **/    public static byte[] encrypt(byte[] content, String password) {        try {            SecretKeySpec key = createKey(password);            Cipher cipher = Cipher.getInstance(CipherMode);            cipher.init(Cipher.ENCRYPT_MODE, key);            byte[] result = cipher.doFinal(content);            return result;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /** 加密(结果为16进制字符串) **/    public static String encrypt(String content, String password) {        byte[] data = null;        try {            data = content.getBytes("UTF-8");        } catch (Exception e) {            e.printStackTrace();        }        data = encrypt(data, password);        String result = byte2hex(data);        return result;    }    /** 加密(结果为16进制字符串) **/    public static String encrypt(String content) {        return encrypt(content,key);    }    /** 解密字节数组 **/    public static byte[] decrypt(byte[] content, String password) {        try {            SecretKeySpec key = createKey(password);            Cipher cipher = Cipher.getInstance(CipherMode);            cipher.init(Cipher.DECRYPT_MODE, key);            byte[] result = cipher.doFinal(content);            return result;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /** 解密16进制的字符串为字符串 **/    public static String decrypt(String content1, String password) {        byte[] data = null;        try {            String content=content1.trim();            if(content.contains("\n"))            {                content=content.replace("\n", "");            }            if(content.contains(" "))            {                content=content.replace(" ", "");            }            data = hex2byte(content);        } catch (Exception e) {            e.printStackTrace();        }        data = decrypt(data, password);        if (data == null)            return null;        String result = null;        try {            result = new String(data, "UTF-8");        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return result;    }    /** 解密16进制的字符串为字符串 **/    public static String decrypt(String content) {        return decrypt(content,key);    }    /** 字节数组转成16进制字符串 **/    public static String byte2hex(byte[] b) { // 一个字节的数,        StringBuffer sb = new StringBuffer(b.length * 2);        String tmp = "";        for (int n = 0; n < b.length; n++) {            // 整数转成十六进制表示            tmp = (java.lang.Integer.toHexString(b[n] & 0XFF));            if (tmp.length() == 1) {                sb.append("0");            }            sb.append(tmp);        }        return sb.toString().toUpperCase(); // 转成大写    }    /** 将hex字符串转换成字节数组 **/    private static byte[] hex2byte(String inputString) {        if (inputString == null || inputString.length() < 2) {            return new byte[0];        }        inputString = inputString.toLowerCase();        int l = inputString.length() / 2;        byte[] result = new byte[l];        for (int i = 0; i < l; ++i) {            String tmp = inputString.substring(2 * i, 2 * i + 2);                       result[i] = (byte) (Integer.parseInt(tmp, 16) & 0xFF);        }        return result;    }}
0 0
原创粉丝点击