欢迎访问宙启技术站
智能推送

JAVA 消息摘要算法 MD5和SHA的代码

发布时间:2023-05-15 03:09:48

一、MD5算法

MD5即为消息摘要算法第五个版本,是一种非常常用的加密算法。其具体代码实现如下:

/**

 * 计算MD5加密值

 * @param str 待加密的字符串

 * @return 加密后的字符串

 */

public static String md5(String str) {

    try {

        MessageDigest md = MessageDigest.getInstance("MD5");

        md.update(str.getBytes("UTF-8"));

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {

            sb.append(String.format("%02x", b & 0xff));

        }

        return sb.toString();

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

}

二、SHA算法

SHA即为安全散列算法,其消息摘要长度较长,安全性也稍高。Java中提供了SHA-1,SHA-256,SHA-384,SHA-512四种算法实现。具体代码实现如下:

/**

 * 计算SHA-1加密值

 * @param str 待加密的字符串

 * @return 加密后的字符串

 */

public static String sha1(String str) {

    try {

        MessageDigest md = MessageDigest.getInstance("SHA-1");

        md.update(str.getBytes("UTF-8"));

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {

            sb.append(String.format("%02x", b & 0xff));

        }

        return sb.toString();

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

}

/**

 * 计算SHA-256加密值

 * @param str 待加密的字符串

 * @return 加密后的字符串

 */

public static String sha256(String str) {

    try {

        MessageDigest md = MessageDigest.getInstance("SHA-256");

        md.update(str.getBytes("UTF-8"));

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {

            sb.append(String.format("%02x", b & 0xff));

        }

        return sb.toString();

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

}

/**

 * 计算SHA-384加密值

 * @param str 待加密的字符串

 * @return 加密后的字符串

 */

public static String sha384(String str) {

    try {

        MessageDigest md = MessageDigest.getInstance("SHA-384");

        md.update(str.getBytes("UTF-8"));

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {

            sb.append(String.format("%02x", b & 0xff));

        }

        return sb.toString();

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

}

/**

 * 计算SHA-512加密值

 * @param str 待加密的字符串

 * @return 加密后的字符串

 */

public static String sha512(String str) {

    try {

        MessageDigest md = MessageDigest.getInstance("SHA-512");

        md.update(str.getBytes("UTF-8"));

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {

            sb.append(String.format("%02x", b & 0xff));

        }

        return sb.toString();

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

}

以上代码实现,调用方式都一致,可根据具体需求选择MD5或SHA-1/SHA-256/SHA-384/SHA-512进行加密。