java md5运算_java实现计算MD5
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轉換器(同樣,這里可以換成SHA1)
MessageDigest messageDigest= MessageDigest.getInstance("MD5");//使用DigestInputStream
fileInputStream= newFileInputStream(inputFilePath);
digestInputStream= newDigestInputStream(fileInputStream,
messageDigest);//read的過程中進行MD5處理,直到讀完文件
byte[] buffer = new byte[bufferSize];while (digestInputStream.read(buffer) > 0)
;//獲取最終的MessageDigest
messageDigest=digestInputStream.getMessageDigest();//拿到結果,也是字節數組,包含16個元素
byte[] resultByteArray =messageDigest.digest();//同樣,把字節數組轉換成字符串
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) {//首先初始化一個字符數組,用來存放每個16進制字符
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};//new一個字符數組,這個就是用來組成結果字符串的(解釋一下:一個byte是八位二進制,也就是2位十六進制字符(2的8次方等于16的2次方))
char[] resultCharArray = new char[byteArray.length * 2];//遍歷字節數組,通過位運算(位運算效率高),轉換成字符放到字符數組中去
int index = 0;for (byteb : byteArray) {
resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];
resultCharArray[index++] = hexDigits[b & 0xf];
}//字符數組組合成字符串返回
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"));
}
}
總結
以上是生活随笔為你收集整理的java md5运算_java实现计算MD5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ftp上传超时_java -
- 下一篇: 12123绑定的手机不用了怎么办