您的位置:首页 > 编程语言 > Java开发

java对String进行MD5加密

2016-03-22 19:45 555 查看
为了安全性,创建用户时输入的密码必须经过加密以后才能存入数据库,数据库中存储的账户密码通常需要加密,常见的有MD5加密,

import java.security.MessageDigest;

/**

 * 密码进行加密和验证的类

 * 包括对密码进行MD5加密,以及验证密码的方法      

 */

public class CipherUtil

{

    // 十六进制下数字到字符的映射数组

    private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5",

        "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};

    /** 将一个字节转化成十六进制形式的字符串

     * @param 字节

     * @return 十六进制字符串

     */

    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];

    }

    /**

     * 将字节数组转换为十六进制形式的字符串

     * @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();

    }

    /**对字符串进行MD5加密

     * @param 需要加密的字符串

     * @return MD5加密过后的字符串

     */

    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;

    }

    /**对字符串进行MD5加密

     * @param 需要加密的字符串

     * @return MD5加密过后的字符串

     */

    public static String generatePassword(String inputString)

    {

        return encodeByMD5(inputString);

    }

    /**

     * 验证输入的密码是否正确

     * @param password  加密后的密码

     * @param inputString 输入的字符串

     * @return 验证结果,TRUE:正确 FALSE:错误

     */

    public static boolean validatePassword(String password, String inputString)

    {

        if (password.equals(encodeByMD5(inputString)))

        {

            return true;

        }

        else

        {

            return false;

        }

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java md5 加密