package kcc.com.cmm.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.servlet.http.HttpServletRequest;

public class WebUtil {
	
	
	/**
	 * MD5
	 * @return
	 */	
	public String convertToHex(byte[] data ){
		StringBuffer buf = new StringBuffer();

		for( int i=0; i< data.length; i++){
			int halfbyte = (data[i] >>> 4 ) & 0x0F;
			int two_halfs =0;

			do{
				if((0 <= halfbyte) && (halfbyte <= 9))
					buf.append((char)('0' + halfbyte));
				else
					buf.append((char)('a' + ( halfbyte - 10)));
					halfbyte =data[i]  & 0x0F;

			}while(two_halfs++ < 1);
		}


		return buf.toString();
	}

	//private static String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingExecption {
	public String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		MessageDigest md;  
		//md = MessageDigest.getInstance("MD5");
        try {
        	// 2021.11.24 보안점검 후속조치 암호화 알고리즘 변경(MD5 -> SHA-256)
        	//md = MessageDigest.getInstance("MD5");
            md = MessageDigest.getInstance("SHA-256");            
        } catch (NoSuchAlgorithmException nsae) {
        	//throw new InternalError("MD5 not supported");
            throw new InternalError("SHA-256 not supported");
        }
		
		byte[] md5hash=new byte[32];
		md.update(text.getBytes("iso-8859-1"),0,text.length());
		md5hash=md.digest();
		return convertToHex(md5hash);
	}	
	
	public boolean isMobile(HttpServletRequest request){ 
		String userAgent = request.getHeader("user-agent"); 
		boolean mobile1 = userAgent.matches(".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*"); 
		boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*"); 
		if(mobile1 || mobile2) { return true; }
		return false; 
	}
		
}

