Java实现MD5消息摘要算法

来源:互联网 发布:betterment mac 编辑:程序博客网 时间:2024/05/21 09:37

首先,必须强调一点,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();    }}

运行结果:

22638a3131d0f0a7346b178fd29f939c0420a206ae8b77b60f314a33b38c875a22638a3131d0f0a7346b178fd29f939c

end.

0 0
原创粉丝点击