package com.hdl.photovoltaic.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;
|
|
public class HDLMD5Utils {
|
/**
|
* 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);
|
}
|
|
/**
|
* MD5文件转字符串
|
*/
|
public static String encodeMD5(byte[] f) {
|
MessageDigest digest;
|
try {
|
digest = MessageDigest.getInstance("MD5");
|
digest.update(f);
|
} 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;
|
|
}
|
}
|