MD5加密

我们都知道在登录账号密码的时候用户输入的密码一般也就6到8位,很容易被另有目的的黑客盗取,从而造成用户的损失。今天这篇文章讲的是MD5加密。

一.MD5低32位

public static String MD5Low32(String str) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			try {
				md.update(str.getBytes("UTF8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			byte b[] = md.digest();
			int i;
			StringBuffer buf = new StringBuffer(200);
			for (int offset = 0; offset < b.length; offset++) {
				i = b[offset] & 0xff;
				if (i < 16)
					buf.append("0");
				buf.append(Integer.toHexString(i));
			}
			return buf.toString();
		} catch (NoSuchAlgorithmException e) {
			Logs.e(e.toString());
			return null;
		}
	}

.MD5高32位

public static String MD5Up32(String str) {
		return MD5Low32(str).toUpperCase(Locale.getDefault());
	}
.MD5高16位
public static String MD5Up16(String str) {
		return MD5Up32(str).substring(8, 24);
	}
.MD5低16位
public static String Md5Low16(String str) {
		return MD5Low32(str).substring(8, 24);
	}
五.项目实战

我将密码变成:(原密码+加密钥匙)先MD5加密得到的值key,再加上"###"再用MD5加密:MD5(key+"###")。

  private String getMd5(String pswStr) {
        String key = Constant.key + pswStr;
        key = MD5.MD5Low32(key);
        key = "###" + MD5.MD5Low32(key);
        try {
            key = URLEncoder.encode(key, "utf-8");// URL编码
            Logs.d(key);
            // 它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return key;
    }
String pwStr:输入的原密码。

Constant.key工具类,可以自定义。比如我的就是个字符串:

 key = "5tZwmk3TIaJ4ELVHzN";//加密钥匙







你可能感兴趣的:(MD5加密)