Java实现MD5消息摘要算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZhuangM_888/article/details/51628641

首先,必须强调一点,MD5不是加密算法,确切的说是一种消息摘要算法,具有不可逆性。通俗的讲,字符串、文件等通过MD5处理后,可以生成一个固定长度为128位的二进制串。(通常将其转换成16进制字符串,可以用于密码校验等)

加密算法和消息摘要算法有何区别?
1、加密算法具有相应地解密算法,通过加密算法对信息进行加密后,采用解密算法能够获取到原始数据。
2、采用摘要算法得到的数据是不完整的,无法反向获取到原始数据。

MD5作用:
1、一致性校验,系统登录、注册等。
2、数字签名,可以将MD5生成的串看成一个指纹。

Java实现MD5摘要算法:

package demo;

import java.security.MessageDigest;

public class MD5 {

    // test
    public static void main(String[] args) {
        System.out.println(getMD5Code("shanghai"));
        System.out.println(getMD5Code("beijing"));
        System.out.println(getMD5Code("shanghai"));
    }

    private MD5() {
    }

    // md5加密
    public static String getMD5Code(String message) {
        String md5Str = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] md5Bytes = md.digest(message.getBytes());
            md5Str = bytes2Hex(md5Bytes);
        }catch(Exception e) {
            e.printStackTrace();
        }
        return md5Str;
    }

    // 2进制转16进制
    public static String bytes2Hex(byte[] bytes) {
        StringBuffer result = new StringBuffer();
        int temp;
        try {
            for (int i = 0; i < bytes.length; i++) {
                temp = bytes[i];
                if(temp < 0) {
                    temp += 256;
                }
                if (temp < 16) {
                    result.append("0");
                }
                result.append(Integer.toHexString(temp));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}

运行结果:

22638a3131d0f0a7346b178fd29f939c
0420a206ae8b77b60f314a33b38c875a
22638a3131d0f0a7346b178fd29f939c

end.

猜你喜欢

转载自blog.csdn.net/ZhuangM_888/article/details/51628641