导航:首页 > 编程语言 > java获取文件的md5

java获取文件的md5

发布时间:2023-08-07 05:17:36

1. 如何使用java生成MD5代码

这是我以前做的一个小项目时用到md5写的


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

//将用户密码进行md5加密 并返回加密后的32位十六进制密码

public class MD5Util {
public static String md5(String password) {

try {
// 获取md5对象
MessageDigest md = MessageDigest.getInstance("md5");
// 获取加密后的密码并返回十进制字节数组
byte[] bytes = md.digest(password.getBytes());

// 遍历数组得到每个十进制数并转换成十六进制

StringBuffer sb = new StringBuffer();
for (byte b : bytes) {

// 把每个数转成十六进制 存进字符中
sb.append(toHex(b));
}
String finish = sb.toString();
return finish;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new RuntimeException(e);
}

}

// 十进制转十六进制方法
private static String toHex(byte b) {

int target = 0;

if (b < 0) {
target = 255 + b;
} else {
target = b;
}

int first = target / 16;
int second = target % 16;

return Hex[first] + Hex[second];
}

static String[] Hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f" };

/*public static void main(String[] args) {
String a = MD5Util.md5("1234");
System.out.println(a);
}*/
}

2. java 有哪些jar包直接提供了获得md5值的方法

需要导入一个jar包:commons-codec

代码如下:

import org.apache.commons.codec.digest.DigestUtils;

public class ToMain {

public static void main(String[] args) {

System.out.println(DigestUtils.md5Hex(".com"));

}

}

3. 如何将java文件内容进行比较

比较文件的MD5即可

import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;

public class FileDigest {
/**
* 获取单个文件的MD5值!
* @param file
* @return
*/
public static String getFileMD5(File file) {
if (!file.isFile()){
return null;
}
MessageDigest digest = null;
FileInputStream in=null;
byte buffer[] = new byte[1024];
int len;
try {
digest = MessageDigest.getInstance("MD5");
in = new FileInputStream(file);
while ((len = in.read(buffer, 0, 1024)) != -1) {
digest.update(buffer, 0, len);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
}

/**
* 获取文件夹中文件的MD5值
* @param file
* @param listChild ;true递归子目录中的文件
* @return
*/
public static Map<String, String> getDirMD5(File file,boolean listChild) {
if(!file.isDirectory()){
return null;
}
//<filepath,md5>
Map<String, String> map=new HashMap<String, String>();
String md5;
File files[]=file.listFiles();
for(int i=0;i<files.length;i++){
File f=files[i];
if(f.isDirectory()&&listChild){
map.putAll(getDirMD5(f, listChild));
} else {
md5=getFileMD5(f);
if(md5!=null){
map.put(f.getPath(), md5);
}
}
}
return map;
}

public static void main(String[] args) {
File file1 = new File("a.txt");
File file2 = new File("b.txt");
System.out.println(getFileMD5(file1).equals(getFileMD5(file2)));
}

}

4. java 算文件的MD5值是怎么用十六进制表示的

&这个是位运算“且”

sb.append(hexChar[(b[i] & 0xf0) >>> 4]);
//(b[i] & 0xf0)这个意思就是取b[i]的后4位
“>>> 无符号右移”

sb.append(hexChar[b[i] & 0x0f]);
//这个意思就是取b[i]的前4位

5. java 获取1G文件md5 要多久

我使用了部分取值的方式来提高MD5的计算速度,这样的时候,时间主要耗费在了IO中。如果是100K(换成500K也并没有提高执行的速度)取一个字符计算大约10秒以内。但是如果全部读取可能要60秒或者更多。对于大文件建议使用一些文件相关信息和部分文件内容做MD5.比如用文件长度和一定间隔取一些字节。

6. Java,如何获取文件的MD5值

package cdm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import org.apache.commons.codec.digest.*;
import org.apache.commons.io.IOUtils;
public class testMD5 {

public static String getMd5ByFile(File file) throws FileNotFoundException {
String value = null;
FileInputStream in = new FileInputStream(file);
try {
MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(byteBuffer);
BigInteger bi = new BigInteger(1, md5.digest());
value = bi.toString(16);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return value;
}

public static void main(String[] args) throws IOException {

String path="E:\文件.zip";

String v = getMd5ByFile(new File(path));
System.out.println("MD5:"+v.toUpperCase());

FileInputStream fis= new FileInputStream(path);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
IOUtils.closeQuietly(fis);
System.out.println("MD5:"+md5);

//System.out.println("MD5:"+DigestUtils.md5Hex("WANGQIUYUN"));
}
}

7. java多个文件怎么生成一个md5

这里定义了一些基本的变量与静态对象,并指定采用的方式是“md5“,下张图为定义了一个方法,方法的参数是接收一个文件File对象,并且返回该文件生成的”md5“值。

这里定义了一个转化方法,把文件或文件流以字节的方式进行转换,使之生成唯一的md5,此方法间接的应用到了md5的生成中。

这里主要定义了一个根据提供的文件流输入流InputStream进行生成md5的值,如上几幅图中的代码加在一起就是完整的文件或文件流的md5值生成方法。

4
最后一张图片为最终生成后的效果,文件上传的时候可以先生成md5的值后到数据库中进行查找,如果找到了就说明相同的文件已经存在,那么就不应该再保存了,否则会出现相同的冗余文件。

阅读全文

与java获取文件的md5相关的资料

热点内容
360命令行 浏览:726
程序员骗色 浏览:668
cisco2950重启命令 浏览:459
加密货币区块链可以增发吗 浏览:290
黄龙公式源码 浏览:773
linux系统ftp服务器 浏览:321
山西配电服务器机柜云主机 浏览:452
量化选股模型公式源码 浏览:9
龙卡购车分期怎么绑app 浏览:779
python读取bios信息 浏览:113
程序员老爸初体验 浏览:729
aes加密后长什么样子 浏览:978
语言有编译器吗 浏览:31
解压声控怎么调大音量 浏览:216
缠论中的高精度画笔源码 浏览:824
通用计算型云服务器 浏览:620
程序员手机分享 浏览:296
pdfsmart 浏览:425
nginx部署php 浏览:666
javaaes加密解密代码 浏览:269