《java学习笔记》MD5加密算法

来源:互联网 发布:淘宝怎么好友代付 编辑:程序博客网 时间:2024/05/01 19:10
import java.security.MessageDigest;/** * Created by dell on 2017/4/18. */public class Encryption {    // MD5加码:32位    public static String MD5(String inStr) {        MessageDigest md5 = null;        try {            md5 = MessageDigest.getInstance("MD5");        } catch (Exception e) {            System.out.println(e.toString());            e.printStackTrace();            return "";        }        char[] charArray = inStr.toCharArray();        byte[] byteArray = new byte[charArray.length];        for (int i = 0; i < charArray.length; i++)            byteArray[i] = (byte) charArray[i];        byte[] md5Bytes = md5.digest(byteArray);        StringBuffer hexValue = new StringBuffer();        for (int i = 0; i < md5Bytes.length; i++) {            int val = ((int) md5Bytes[i]) & 0xff;            if (val < 16)                hexValue.append("0");            hexValue.append(Integer.toHexString(val));        }        return hexValue.toString();    }    // 可逆的加密算法    public static String KL(String inStr) {        // String s = new String(inStr);        char[] a = inStr.toCharArray();        for (int i = 0; i < a.length; i++) {            a[i] = (char) (a[i] ^ 't');        }        String s = new String(a);        return s;    }    // 加密后解密    public static String JM(String inStr) {        char[] a = inStr.toCharArray();        for (int i = 0; i < a.length; i++) {            a[i] = (char) (a[i] ^ 't');        }        String k = new String(a);        return k;    }    /*// 测试主函数    public static void main(String args[]) {        String s = new String("123123");        System.out.println("原始:" + s);        System.out.println("MD5后:" + MD5(s));        System.out.println("MD5后再加密:" + KL(MD5(s)));        System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));    }*/    /**     * 创建指定数量的随机字符串     *     * @param numberFlag     *            是否是数字     * @param length     * @return     */    public static String generateQC(boolean numberFlag, int length) {        String retStr = "";        String strTable = numberFlag ? "1234567890"                : "1234567890abcdefghijkmnpqrstuvwxyz";        int len = strTable.length();        boolean bDone = true;        do {            retStr = "";            int count = 0;            for (int i = 0; i < length; i++) {                double dblR = Math.random() * len;                int intR = (int) Math.floor(dblR);                char c = strTable.charAt(intR);                if (('0' <= c) && (c <= '9')) {                    count++;                }                retStr += strTable.charAt(intR);            }            if (count >= 2) {                bDone = false;            }        } while (bDone);        return retStr;    }}
0 0
原创粉丝点击