一、知识点

1、摘要流
计算流的消息摘要,java.util.security中,security(安全)
摘要流也属于过滤流,这两个过滤流为DigestInputStream和DigestOutputStream,digest(摘要)
2、数字签名
摘要的计算需要一些算法,如MD5、SHA
消息摘要在Java中使用java.util.security.MessageDigest
3、获取文件的摘要
使用FileInputStream文件流读取文件
使用MessageDigest.getInstance方法取得MessageDigest实例
将以上作为参数传递给DigestInputStream摘要流的构造器
通过while循环read方法后,MessageDigest.digest即可获得摘要
二、示例代码
 
  1. @Override 
  2.     public void run() { 
  3.         try { 
  4.             FileInputStream in = new FileInputStream(input); 
  5.             MessageDigest digest = MessageDigest.getInstance("SHA"); 
  6.             DigestInputStream dis = new DigestInputStream(in,digest); 
  7.             while(dis.read()!=-1); 
  8.             dis.close(); 
  9.             byte[] d = digest.digest(); 
  10.             StringBuffer sb = new StringBuffer(input.toString()); 
  11.             for(int i=0;i<d.length;i++){ 
  12.                 sb.append(d[i]); 
  13.             } 
  14.             System.out.println(sb.toString()); 
  15.         } catch (Exception e) { 
  16.             e.printStackTrace(); 
  17.         } 
  18.     } 
 
  1. private File input; 
  2.     public DigestRunnable(File input){ 
  3.         this.input = input; 
  4.     } 
  5.      
  6.     public static void main(String[] args) { 
  7.         new Thread(new DigestRunnable(new File("1.txt"))).start(); 
  8.     }