日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java md5运算_java实现计算MD5

發(fā)布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java md5运算_java实现计算MD5 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

importjava.io.FileInputStream;importjava.security.DigestInputStream;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;public classMD5Class {//計算字符串的MD5

public staticString conVertTextToMD5(String plainText) {try{

MessageDigest md= MessageDigest.getInstance("MD5");

md.update(plainText.getBytes());byte b[] =md.digest();inti;

StringBuffer buf= new StringBuffer("");for (int offset = 0; offset < b.length; offset++) {

i=b[offset];if (i < 0)

i+= 256;if (i < 16)

buf.append("0");

buf.append(Integer.toHexString(i));

}//32位加密

returnbuf.toString();//16位的加密//return buf.toString().substring(8, 24);

} catch(NoSuchAlgorithmException e) {

e.printStackTrace();return null;

}

}

//計算文件的MD5,支持4G一下的文件(文件親測,大文件未親測)public staticString conVertFileToMD5(String inputFilePath) {int bufferSize = 256 * 1024;

FileInputStream fileInputStream= null;

DigestInputStream digestInputStream= null;try{//拿到一個MD5轉(zhuǎn)換器(同樣,這里可以換成SHA1)

MessageDigest messageDigest= MessageDigest.getInstance("MD5");//使用DigestInputStream

fileInputStream= newFileInputStream(inputFilePath);

digestInputStream= newDigestInputStream(fileInputStream,

messageDigest);//read的過程中進(jìn)行MD5處理,直到讀完文件

byte[] buffer = new byte[bufferSize];while (digestInputStream.read(buffer) > 0)

;//獲取最終的MessageDigest

messageDigest=digestInputStream.getMessageDigest();//拿到結(jié)果,也是字節(jié)數(shù)組,包含16個元素

byte[] resultByteArray =messageDigest.digest();//同樣,把字節(jié)數(shù)組轉(zhuǎn)換成字符串

returnbyteArrayToHex(resultByteArray);

}catch(Exception e) {return null;

}finally{try{

digestInputStream.close();

}catch(Exception e) {

}try{

fileInputStream.close();

}catch(Exception e) {

}

}

}private static String byteArrayToHex(byte[] byteArray) {//首先初始化一個字符數(shù)組,用來存放每個16進(jìn)制字符

char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};//new一個字符數(shù)組,這個就是用來組成結(jié)果字符串的(解釋一下:一個byte是八位二進(jìn)制,也就是2位十六進(jìn)制字符(2的8次方等于16的2次方))

char[] resultCharArray = new char[byteArray.length * 2];//遍歷字節(jié)數(shù)組,通過位運(yùn)算(位運(yùn)算效率高),轉(zhuǎn)換成字符放到字符數(shù)組中去

int index = 0;for (byteb : byteArray) {

resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];

resultCharArray[index++] = hexDigits[b & 0xf];

}//字符數(shù)組組合成字符串返回

return newString(resultCharArray);

}public static voidmain(String[] args) {//測試

System.out.println(MD5Class.conVertTextToMD5("hello"));

System.out

.println(conVertFileToMD5("C:\\Users\\administrator1\\Downloads\\StarUML-v2.8.0.msi"));

}

}

總結(jié)

以上是生活随笔為你收集整理的java md5运算_java实现计算MD5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。