자바 가 문자열 과 파일 을 계산 하 는 MD5 와 SHA 1
2498 단어 자바
package net.hkh.util;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
@SuppressWarnings("unused")
private static final String md5 = "MD5";
@SuppressWarnings("unused")
private static final String sha1 = "SHA-1";
/**
* @desc md5 or sha1
* @param str
* @param lx,md5
* or sha1
* @return
* @throws UnsupportedEncodingException
*
*/
public static String md5OrSha1OfString(String str, String lx)
throws UnsupportedEncodingException {
try {
MessageDigest md = MessageDigest.getInstance(lx);
byte[] inputByteArr = str.getBytes("UTF-8");
md.update(inputByteArr);
byte[] rsByteArr = md.digest();
return byteArrayToHex(rsByteArr);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
/**
* @desc md5 or sha1
* @param inputFile
* @param lx,md5
* or sha1
* @return
* @throws IOException
*
*/
@SuppressWarnings("finally")
public static String md5OrSha1OfFile(String inputFile, String lx)
throws IOException {
int bufferSize = 256 * 1024;
FileInputStream fis = null;
DigestInputStream dis = null;
String rslt = null;
try {
MessageDigest md = MessageDigest.getInstance(lx);
fis = new FileInputStream(inputFile);
dis = new DigestInputStream(fis, md);
byte[] buffer = new byte[bufferSize];
while (dis.read(buffer) > 0) {
md = dis.getMessageDigest();
byte[] arr = md.digest();
rslt = byteArrayToHex(arr);
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
rslt = null;
} finally {
try {
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
dis = null;
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
fis = null;
return rslt;
}
}
/**
* @desc
* @param arr
* @return
*
*/
public static String byteArrayToHex(byte[] arr) {
String hexStr = "0123456789ABCDEF";
StringBuilder rslt = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
rslt.append(String.valueOf(hexStr.charAt((arr[i] & 0xf0) >> 4)));
rslt.append(String.valueOf(hexStr.charAt(arr[i] & 0x0f)));
}
return rslt.toString();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.