Runnable을 사용한 MD5 다이제스트 생성방법
package practice1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.xml.bind.DatatypeConverter;
public class practice implements Runnable{
private String filename;
public practice(String filename){
this.filename = filename;
}
public void run(){
FileInputStream in; // 해제 패턴
try{
in = new FileInputStream(filename);
MessageDigest sha = MessageDigest.getInstance("MD5"); //MD5 다이제스트 생성
DigestInputStream din = new DigestInputStream(in,sha);
while(din.read() != -1);
din.close();
byte[] digest = sha.digest();
StringBuilder result = new StringBuilder(filename);
result.append(": ");
result.append(DatatypeConverter.printHexBinary(digest));
System.out.println(result);
}catch (NoSuchAlgorithmException ex){
ex.printStackTrace();
System.err.println(ex.getMessage());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]){
practice prac = new practice("practice1.txt");
Thread t = new Thread(prac);
t.start();
}
}
Runnable을 사용하면
Thread를 사용할때 보다 더 좋은 이유는 다른 서브 클래스를 상속 받을 수 있기 때문이다.
practice1.txt
- thisiskey
result view
'JAVA > 자바 네트워크 프로그래밍' 카테고리의 다른 글
sha 256 다이제스트 생성(Thread) (0) | 2016.12.24 |
---|---|
HTTP (0) | 2016.12.24 |
소켓 통신 (어플리케이션) (0) | 2016.12.24 |
UDP 통신 (0) | 2016.12.24 |
Java 소켓 통신(서버) (0) | 2016.12.24 |