java使用计算md5校验码方式比较两个文件是否相同_Java教程-查字典教程网
java使用计算md5校验码方式比较两个文件是否相同
java使用计算md5校验码方式比较两个文件是否相同
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:publicclassMD5Check{/***默认的密码字符串组合,用来将字节转换成16进制表示的字符,apache校验...

复制代码 代码如下:

public class MD5Check {

/**

* 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合

*/

protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

protected MessageDigest messagedigest = null;

{

try {

messagedigest = MessageDigest.getInstance("MD5");

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

}

public String getFileMD5String(File file) throws IOException {

InputStream fis;

fis = new FileInputStream(file);

byte[] buffer = new byte[1024];

int numRead = 0;

while ((numRead = fis.read(buffer)) > 0) {

messagedigest.update(buffer, 0, numRead);

}

fis.close();

return bufferToHex(messagedigest.digest());

}

public String getFileMD5String(InputStream in) throws IOException {

byte[] buffer = new byte[1024];

int numRead = 0;

while ((numRead = in.read(buffer)) > 0) {

messagedigest.update(buffer, 0, numRead);

}

in.close();

return bufferToHex(messagedigest.digest());

}

private String bufferToHex(byte bytes[]) {

return bufferToHex(bytes, 0, bytes.length);

}

private 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 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);

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类