トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

MD5

一部の情報は非常に古いもの(20年以上前〜)ですので、利用する際はご注意ください(Java 1.4 とか .NET 1.0 とか、Windows 2000 とか)
お問い合せは wiki@shise.net まで。Gmail に転送されるので、スパムは全部カットされます。


 

MD5

指定されたファイルを読み込み、MD5の文字列を返すメソッドのコード。
MD5とは、バイト列などからユニークな32文字の文字列を取り出すような感じの奴。
たとえ1バイト違うだけで、全く違った内容の文字列になるという特徴がある。

import java.io.*;
import java.security.*;

public class MD5{
	/**
	 * 指定されたファイルのMD5を返すメソッドです。<BR>
	 * 何らかのエラーが発生すると null を返します。
	 *
	 * @param file MD5を調べたいファイル名。
	 * @return ファイルのMD5、または null
	 */
	public static String md5(String file) {
		try {
			DigestInputStream dis = new DigestInputStream(
				new BufferedInputStream(new FileInputStream(file)),
					MessageDigest.getInstance("MD5"));
			
			byte[] buf = new byte[1024];
			while(true){
				if (dis.read(buf,0,1024) == -1)break;
			}
			dis.close();
			
			MessageDigest md5 = dis.getMessageDigest();
			byte[] digest = md5.digest();
			
			StringBuffer result = new StringBuffer(32);
			int size = digest.length;
			for(int i=0; i<size; i++){
				int hex = digest[i] & 0xff;
				if(hex < 16)result.append("0");
				result.append(Integer.toHexString(hex));
			}
			
			return result.toString();
		}catch (IOException ex){
			ex.printStackTrace();
		}catch (NoSuchAlgorithmException ex){
			ex.printStackTrace();
		}
		return null;
	}
}