Java
1 사용방법 #
java -jar md5sum.jar --help : 도움말 출력 java -jar md5sum.jar < myfile : myfile의 md5값을 구해서 콘솔에 출력 java -jar md5sum.jar < myfile > myfile.md5 : myfile의 md5값을 구해서 myfile.md5파일에 저장 java -jar md5sum.jar --buffsz 10240 < myfile > myfile.md5 : 버퍼사이즈를 10240바이트로 지정해서 myfile의 md5값을 구해서 myfile.md5파일에 저장
2 소스 #
/* * MD5sum.java * * Created on 2004년 10월 22일 (금), 오후 3:22 */ package net.hikiki.security; import java.io.*; import java.security.*; /** * * @author kiki */ public class MD5sum { private static int DEFAULT_BUFFER_SIZE = 2048; public String digest(InputStream is) { ByteArrayOutputStream baos = new ByteArrayOutputStream(32); digest(is, baos); return new String(baos.toByteArray()); } public void digest(InputStream is, OutputStream os) { digest(is, os, DEFAULT_BUFFER_SIZE); } public void digest(InputStream is, OutputStream os, int bufferSize) { MessageDigest md5 = null; try{ md5 = java.security.MessageDigest.getInstance("MD5"); } catch(NoSuchAlgorithmException nsae){ System.err.println("no such algorithm : MD5"); return; } byte[] buffer = new byte[bufferSize]; int read; try{ while( (read=is.read(buffer, 0, buffer.length))!=-1 ){ md5.update(buffer, 0, read); } } catch(IOException ioe){ System.err.println("I/O Exception : while reading"); return; } byte[] raw = md5.digest(); String h; try{ for(int i=0; i<raw.length; i++){ h = Integer.toHexString(raw[i]); h = h.substring(h.length()-2); os.write(h.getBytes()); } } catch(IOException ioe){ System.err.println("I/O Exception : while writing"); return; } } /** * static member */ public static void main(String[] args) { int buffSize = 0; for(int i=0; i<args.length; i++){ // 도움말 보여주기 if("--help".equals(args[i])){ showUsage(); return; } // 버퍼크기지정옵션 if("--buffsz".equals(args[i])){ if(i>args.length-2){ System.err.println("no buffer size specified."); System.err.println("ex) java -jar md5sum.jar --buffsz 10240 < my_file > my_file.md5"); return; } try{ buffSize = Integer.parseInt(args[i+1]); } catch(NumberFormatException nfe){} if(buffSize<1){ System.err.println("invalid buffer size."); System.err.println("ex) java -jar md5sum.jar --buffsz 10240 < my_file > my_file.md5"); return; } i++; } } MD5sum md5sum = new MD5sum(); if(buffSize>0) md5sum.digest(System.in, System.out, buffSize); else md5sum.digest(System.in, System.out); } public static void showUsage() { System.out.println("java -jar md5sum.jar [OPTIONS]"); System.out.println("java -jar md5sum.jar [OPTIONS] < file_name"); System.out.println("java -jar md5sum.jar [OPTIONS] < file_name > md5_file"); System.out.println(" options : "); System.out.println(" --help : show help (this doc)"); System.out.println(" --buffsz n: set buffer size to n (default="+DEFAULT_BUFFER_SIZE+")"); } }