用java计算文件MD5(文件hash)
2014-01-19 09:40
309 查看
distributed system的第一个实验需要提供这个功能,即如果一个配置文件改变了,在收发信息的时候就要按照新的配置文件的规则进行收发
那么如何知道一个文件是否改变了呢?当然是用比较文件hash值的方法,文件hash又叫文件签名,文件中哪怕一个bit位被改变了,文件hash就会不同。
比较常用的文件hash算法有MD5和SHA-1。
在这个实验中,我用的是MD5算法,java中,计算MD5可以用MessageDigest这个类。
下面是代码:
那么如何知道一个文件是否改变了呢?当然是用比较文件hash值的方法,文件hash又叫文件签名,文件中哪怕一个bit位被改变了,文件hash就会不同。
比较常用的文件hash算法有MD5和SHA-1。
在这个实验中,我用的是MD5算法,java中,计算MD5可以用MessageDigest这个类。
下面是代码:
public static void main(String args[]) { try { System.out.println(getMD5Checksum("config.yaml")); } catch (Exception e) { e.printStackTrace(); } } public static byte[] createChecksum(String filename) throws Exception { InputStream fis = new FileInputStream(filename); //将流类型字符串转换为String类型字符串 byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); //如果想使用SHA-1或SHA-256,则传入SHA-1,SHA-256 int numRead; do { numRead = fis.read(buffer); //从文件读到buffer,最多装满buffer if (numRead > 0) { complete.update(buffer, 0, numRead); //用读到的字节进行MD5的计算,第二个参数是偏移量 } } while (numRead != -1); fis.close(); return complete.digest(); } public static String getMD5Checksum(String filename) throws Exception { byte[] b = createChecksum(filename); String result = ""; for (int i=0; i < b.length; i++) { result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring(1);//加0x100是因为有的b[i]的十六进制只有1位 } return result; }
相关文章推荐
- JAVA File类的hashCode()和计算文件hash值的区别
- 【转】Java计算文件的hash值
- java使用计算md5校验码方式比较两个文件是否相同
- JAVA计算文件的MD5及SHA1等值
- java 计算 文件 md5
- java 实现字符串以及文件的md5、sha计算完整代码
- 深度解析 Java 计算某个文件的 MD5 值的原理(附源码)
- java使用计算md5校验码方式比较两个文件是否相同
- js跟java计算文件MD5不一致问题
- Java计算字符串和文件的MD5与SHA1
- java计算过G文件md5 值计算
- Java计算文件的MD5值
- 【Python】计算文件MD5 和 SHA1
- Java 文件大小以M为单位计算方法
- IOS上计算文件MD5和计算数据块MD5和复制文件耗时数据
- java 计算文件目录下文件总大小的几种多线程并发实现
- VC 使用CryptoAPI计算Hash值:MD5, SHA
- 遍历目录下的所有文件,计算文件的md5并输出
- 集算器用作Java结构化文件计算类库
- [原创]HashCalc - 一款计算单个文件哈希值的免费软件,目前支持CRC32、MD5、SHA-1、SHA-2、Ripemd等算法。