protected static MessageDigest messagedigest = null;
protected static char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
static {
try {
messagedigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static String getFileMD5StringByUrl(String urlStr) throws IOException {
URL url=new URL(urlStr);
return getFileMD5String(url.openStream());
}
public static String getFileMD5String(InputStream fis) throws IOException {
byte[] buffer = new byte[1024];
int numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
if(fis!=null){
fis.close();
}
return bufferToHex(messagedigest.digest());
}
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private static String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
return stringbuffer.toString();
}
private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换
// 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同
char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换
stringbuffer.append(c0);
stringbuffer.append(c1);
}
public static void main(String[] args) {
String urlStr="http://shiliu.s.wcsapi.biz.matocloud.com/gift/chaopao1.gif";
String str;
try {
str = getFileMD5StringByUrl(urlStr);
System.out.println(str);//41137a5cd0eebe701219c37dd9736684
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
将url 进行md5加密 转成字符串 参考 百度知道
最新推荐文章于 2023-04-14 18:04:36 发布