package com.hdl.linkpm.sdk.utils; 
 | 
  
 | 
import java.io.File; 
 | 
import java.io.FileInputStream; 
 | 
import java.io.UnsupportedEncodingException; 
 | 
import java.math.BigInteger; 
 | 
import java.nio.charset.StandardCharsets; 
 | 
import java.security.MessageDigest; 
 | 
import java.security.NoSuchAlgorithmException; 
 | 
  
 | 
/** 
 | 
 * Created by Tong on 2021/11/3. 
 | 
 */ 
 | 
public final class HDLMD5Utils { 
 | 
  
 | 
  
 | 
    /** 
 | 
     * MD5转字符串 
 | 
     */ 
 | 
    public static String encodeMD5(byte[] f) { 
 | 
        try { 
 | 
            MessageDigest digest = MessageDigest.getInstance("MD5"); 
 | 
            digest.update(f); 
 | 
            byte[] messageDigest = digest.digest(); 
 | 
            return toHexString(messageDigest); 
 | 
        } catch (NoSuchAlgorithmException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return ""; 
 | 
    } 
 | 
    /** 
 | 
     * MD5转字符串 
 | 
     */ 
 | 
    public static String encodeMD5(String s) { 
 | 
        try { 
 | 
            MessageDigest digest = MessageDigest.getInstance("MD5"); 
 | 
            digest.update(s.getBytes(StandardCharsets.UTF_8)); 
 | 
            byte[] messageDigest = digest.digest(); 
 | 
            return toHexString(messageDigest); 
 | 
        } catch (NoSuchAlgorithmException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return ""; 
 | 
    } 
 | 
  
 | 
    private static String toHexString(byte[] keyData) { 
 | 
        if (keyData == null) { 
 | 
            return null; 
 | 
        } 
 | 
        int expectedStringLen = keyData.length * 2; 
 | 
        StringBuilder sb = new StringBuilder(expectedStringLen); 
 | 
        for (byte keyDatum : keyData) { 
 | 
            String hexStr = Integer.toString(keyDatum & 0x00FF, 16); 
 | 
            if (hexStr.length() == 1) { 
 | 
                hexStr = "0" + hexStr; 
 | 
            } 
 | 
            sb.append(hexStr); 
 | 
        } 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * MD5转字符串 
 | 
     * 额外值 
 | 
     */ 
 | 
    public static String encodeMD52(String s) { 
 | 
        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; 
 | 
        try { 
 | 
            byte[] btInput = s.getBytes(StandardCharsets.UTF_8); 
 | 
            MessageDigest digest = MessageDigest.getInstance("MD5"); 
 | 
            digest.update(btInput); 
 | 
            byte[] md = digest.digest(); 
 | 
            int j = md.length; 
 | 
            char[] str = new char[j * 2]; 
 | 
            int k = 0; 
 | 
            for (byte byte0 : md) { 
 | 
                str[k++] = hexDigits[byte0 >>> 4 & 0xf]; 
 | 
                str[k++] = hexDigits[byte0 & 0xf]; 
 | 
            } 
 | 
            return new String(str); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * MD5文件转字符串 
 | 
     */ 
 | 
    public static String encodeMD5(File f) { 
 | 
        if (!f.isFile()) { 
 | 
            return null; 
 | 
        } 
 | 
        MessageDigest digest; 
 | 
        byte[] buffer = new byte[1024]; 
 | 
        int len; 
 | 
        try { 
 | 
            digest = MessageDigest.getInstance("MD5"); 
 | 
            FileInputStream in = new FileInputStream(f); 
 | 
            while ((len = in.read(buffer, 0, 1024)) != -1) { 
 | 
                digest.update(buffer, 0, len); 
 | 
            } 
 | 
            in.close(); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
        BigInteger bigInt = new BigInteger(1, digest.digest()); 
 | 
        return bigInt.toString(16); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    public final static String md5(String plainText) { 
 | 
  
 | 
// 返回字符串 
 | 
  
 | 
        String md5Str = null; 
 | 
  
 | 
        try { 
 | 
  
 | 
// 操作字符串 
 | 
  
 | 
            StringBuffer buf = new StringBuffer(); 
 | 
  
 | 
            MessageDigest md = 
 | 
  
 | 
                    MessageDigest.getInstance("MD5"); 
 | 
  
 | 
// 添加要进行计算摘要的信息,使用 plainText 的 byte 
 | 
  
 | 
  
 | 
            md.update(plainText.getBytes()); 
 | 
  
 | 
// 计算出摘要,完成哈希计算。 
 | 
  
 | 
            byte b[] = md.digest(); 
 | 
  
 | 
            int i; 
 | 
  
 | 
            for (int offset = 0; offset < b.length; offset++) { 
 | 
  
 | 
                i = b[offset]; 
 | 
  
 | 
                if (i < 0) { 
 | 
  
 | 
                    i += 256; 
 | 
  
 | 
                } 
 | 
  
 | 
                if (i < 16) { 
 | 
  
 | 
                    buf.append("0"); 
 | 
  
 | 
                } 
 | 
  
 | 
// 将整型 十进制 i 
 | 
  
 | 
  
 | 
                buf.append(Integer.toHexString(i)); 
 | 
  
 | 
            } 
 | 
  
 | 
// 32位的加密 
 | 
  
 | 
            md5Str = buf.toString(); 
 | 
  
 | 
// 16位的加密 
 | 
  
 | 
// md5Str =  buf.toString().md5Strstring(8,24); 
 | 
  
 | 
        } catch (Exception e) { 
 | 
  
 | 
            e.printStackTrace(); 
 | 
  
 | 
        } 
 | 
  
 | 
        return md5Str; 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |