一、知识点
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即可获得摘要
二、示例代码
- @Override
- public void run() {
- try {
- FileInputStream in = new FileInputStream(input);
- MessageDigest digest = MessageDigest.getInstance("SHA");
- DigestInputStream dis = new DigestInputStream(in,digest);
- while(dis.read()!=-1);
- dis.close();
- byte[] d = digest.digest();
- StringBuffer sb = new StringBuffer(input.toString());
- for(int i=0;i<d.length;i++){
- sb.append(d[i]);
- }
- System.out.println(sb.toString());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private File input;
- public DigestRunnable(File input){
- this.input = input;
- }
- public static void main(String[] args) {
- new Thread(new DigestRunnable(new File("1.txt"))).start();
- }