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 哈希值,需把所有元素合并后再计算。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论