zoukankan      html  css  js  c++  java
  • MD5加密Java工具类

    原文:http://www.open-open.com/code/view/1421764946296

    import java.security.MessageDigest;
    public class MD5 {
        //公盐
        private static final String PUBLIC_SALT = "demo" ;
        //十六进制下数字到字符的映射数组  
        private final static String[] hexDigits = {"0", "1", "2", "3", "4",  
            "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
         
        /**
         * 用户密码加密,盐值为 :私盐+公盐
         * @param  password 密码
         * @param  salt 私盐
         * @return  MD5加密字符串
         */
        public static String encryptPassword(String password,String salt){
            return encodeByMD5(PUBLIC_SALT+password+salt);
        }
         
        /**
         * md5加密算法
         * @param  originString
         * @return 
         */
        private static String encodeByMD5(String originString){  
            if (originString != null){  
                try{  
                    //创建具有指定算法名称的信息摘要  
                    MessageDigest md = MessageDigest.getInstance("MD5");  
                    //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算  
                    byte[] results = md.digest(originString.getBytes());  
                    //将得到的字节数组变成字符串返回  
                    String resultString = byteArrayToHexString(results);  
                    return resultString.toUpperCase();  
                } catch(Exception ex){  
                    ex.printStackTrace();  
                }  
            }  
            return null;  
        } 
         
        /**  
         * 转换字节数组为十六进制字符串 
         * @param     字节数组 
         * @return    十六进制字符串 
         */  
        private static String byteArrayToHexString(byte[] b){  
            StringBuffer resultSb = new StringBuffer();  
            for (int i = 0; i < b.length; i++){  
                resultSb.append(byteToHexString(b[i]));  
            }  
            return resultSb.toString();  
        }  
           
        /** 将一个字节转化成十六进制形式的字符串     */  
        private static String byteToHexString(byte b){  
            int n = b;  
            if (n < 0)  
                n = 256 + n;  
            int d1 = n / 16;  
            int d2 = n % 16;  
            return hexDigits[d1] + hexDigits[d2];  
        }
    }
  • 相关阅读:
    Riverside Curio
    bzoj1010 [HNOI2008]玩具装箱toy
    bzoj1898 [Zjoi2005]Swamp 沼泽鳄鱼
    hdu 5435 A serious math problem
    poj2411 Mondriaan's Dream
    bzoj3450 Tyvj1952 Easy
    关于欧拉函数与莫比乌斯函数等一系列积性函数的线性筛
    NOIP后一波总结
    回忆一下电子科技大学春令营
    【算法】背包九讲
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7047746.html
Copyright © 2011-2022 走看看