MD5Transform.java2011-09-17 09:04:25

OpenAMのJDBC認証時にMD5パスワードを扱いたかったので作ったもの.探がしかたが悪かったのか,適当なものが見つからなかった.ClearTextTransform以外もはじめから用意しててくれればいいのに.

package com.sun.identity.authentication.modules.jdbc;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
import com.sun.identity.authentication.spi.AuthLoginException;

public class MD5Transform implements JDBCPasswordSyntaxTransform {

	public MD5Transform() {
		
	}
	@Override
	public String transform(String input) throws AuthLoginException {
		System.out.println(input);
		String result = toMD5HexString(input);
		result = result.trim();
		System.out.println(result);
		return result;
	}
	
	private String toMD5HexString(String source) {
		StringBuilder sb = new StringBuilder();
		 MessageDigest md;
		try {
			md = MessageDigest.getInstance("MD5");

			  byte[] data = source.getBytes();
			  md.update(data);
			            
			  byte[] digest = md.digest();
			            
			  
			  for (int i = 0; i < digest.length; i++) {
				  String hex = Integer.toHexString((int) 0x00FF & digest[i]);
				     if (hex.length() == 1) 
				     {
				        sb.append("0");
				     }
			    sb.append(hex);
			  }
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}

	return sb.toString();
	}
}