欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的MD5加密

程序员文章站 2024-03-19 11:47:22
...

JAVA中的MD5加密

在java.security包中实行Java内部的MD5加密

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public final class MD5 {

    public static String encrypt(String strSrc) {
        try {
            // 16进制的所有字符数组
            char hexChars[] = { '0', '1', '2', '3', 
            '4', '5', '6', '7', '8','9', 'a', 'b', 'c',
             'd', 'e', 'f' };
            // 输入的字符串转换成字节数组
            byte[] bytes = strSrc.getBytes();
            // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)
            MessageDigest md = MessageDigest.getInstance("MD5");
            // bytes是输入字符串转换得到的字节数组,使用指定字节更新摘要
            md.update(bytes);
            // 转换并返回结果,也是字节数组,包含16个元素
            bytes = md.digest();
            // 取出字节数组的长度
            int j = bytes.length;
            // 并创建一个字符数组,容量是其2倍 32
            char[] chars = new char[j * 2];
            // 定义一个数组的下标记录数
            int k = 0;
            for (int i = 0; i < bytes.length; i++) {
                byte b = bytes[i];
                // 将每个数b进行双字节加密
                // 不带符号右移4位,移位处补0 & 十六进制的f 即 高四位清空 取低四位的值
                chars[k++] = hexChars[b >>> 4 & 0xf];
                chars[k++] = hexChars[b & 0xf];
            }
            // 返回加密后的字符串
            return new String(chars);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            throw new RuntimeException("MD5加密出错!!+" + e);
        }
    }

    public static void main(String[] args) {
        System.out.println(MD5.encrypt("111111"));
    }

}