网络计算环境中很多时候需要对文件进行消息摘要计算,防止文件被篡改,校验文件是否被修改过,JDK本身提供了消息摘要算法,使用起来相当方便,主要用到安全摘要计算类
java.security.MessageDigest,如下:
package com.test.b;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
public class MessageDigestTest {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String file = "mm.txt"; //该文件为需要进行摘要计算的文件
comMessDigest(file,"SHA-1");
comMessDigest(file,"MD5");
}
/**
*
* @param name 文件名称
* @param md 摘要算法
* @throws Exception
*/
public static void comMessDigest(String name,String md) throws Exception{
MessageDigest digest = MessageDigest.getInstance(md);
InputStream in = new BufferedInputStream(new FileInputStream(name));
int ch;
while((ch = in.read())!=-1){
//用指定字节更新摘要
digest.update((byte)ch);
}
in.close();
//完成散列摘要计算
byte[] hash = digest.digest();
printResult(hash);
}
/**
* 打印摘要结果
* @param scoure
*/
public static void printResult(byte[] scoure){
StringBuilder builder = new StringBuilder();
for(byte c: scoure){
builder.append((int)c);
}
System.out.println(builder.toString());
}
}
结果如下:
682289988-127418543-1277977120-372-125-36-5364105
-96-19-641210641-72-77-6282-8-67-611221005