Java

Contents

1 사용방법
2 소스
3 binary download

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+")");
    }
}

3 binary download #

@md5sum.jar (2.71 KB)
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-27 17:32:32
Processing time 0.0080 sec