java文件内容转换为md5哈希值
若要把读取到的 files 列表里的内容转换为 md5 哈希值,你可以逐个遍历 files 列表中的元素,将每个元素的内容计算成 md5 哈希值。
一个完整的java示例代码
展示了如何实现这一功能:
import java.io.bufferedinputstream;
import java.io.fileinputstream;
import java.io.ioexception;
import java.security.messagedigest;
import java.security.nosuchalgorithmexception;
import java.util.arraylist;
import java.util.list;
class checkhelper {
public static string getocetstring(byte[] buffer, int bytesread) {
return new string(buffer, 0, bytesread);
}
}
public class filestomd5 {
public static string calculatemd5(string input) {
try {
// 获取 md5 消息摘要实例
messagedigest md = messagedigest.getinstance("md5");
// 计算输入字符串的 md5 哈希值
byte[] digest = md.digest(input.getbytes());
stringbuilder hexstring = new stringbuilder();
for (byte b : digest) {
string hex = integer.tohexstring(0xff & b);
if (hex.length() == 1) {
hexstring.append('0');
}
hexstring.append(hex);
}
return hexstring.tostring();
} catch (nosuchalgorithmexception e) {
// 若 md5 算法不可用,抛出运行时异常
throw new runtimeexception(e);
}
}
public static void main(string[] args) {
string path = "path/to/your/file.txt";
int blocksize = 1024;
long filelength = 0;
list<string> files = new arraylist<>();
try (bufferedinputstream bis = new bufferedinputstream(new fileinputstream(path))) {
byte[] buffer = new byte[blocksize];
int bytesread;
while ((bytesread = bis.read(buffer)) != -1) {
filelength += bytesread;
files.add(checkhelper.getocetstring(buffer, bytesread));
}
} catch (ioexception e) {
e.printstacktrace();
}
// 遍历 files 列表,计算每个元素的 md5 哈希值
for (string content : files) {
string md5 = calculatemd5(content);
system.out.println("内容: " + content);
system.out.println("md5 哈希值: " + md5);
}
}
} 代码解释
calculatemd5 方法:
- 借助
messagedigest.getinstance("md5")获取 md5 消息摘要实例。 - 利用
md.digest(input.getbytes())计算输入字符串的 md5 哈希值。 - 把计算得到的字节数组转换为十六进制字符串。
main 方法:
- 读取文件内容到
files列表。 - 遍历
files列表,对每个元素调用calculatemd5方法计算 md5 哈希值,并将结果打印输出。
注意事项
- 要把
"path/to/your/file.txt"替换成实际的文件路径。 - 此代码是对
files列表里的每个元素分别计算 md5 哈希值。若你要计算整个文件内容的 md5 哈希值,需把所有元素合并后再计算。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论