BackEND/Java

md5, sha256 암호화 방법과 로그인 프로세스

mingmingIT 2020. 12. 11. 10:30

java security MessageDigest를 이용하여 md5, sha256암호화를 실행한다.

package com.common.security; 

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {
	public static String encMD5(String pwd) {
	    String MD5 = "";
	    try {
	        MessageDigest md = MessageDigest.getInstance("MD5");
	        md.update(pwd.getBytes());
	        byte byteData[] = md.digest();
	        StringBuffer sb = new StringBuffer();
	        for (int i = 0; i < byteData.length; i++) {
	            sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
	        }
	        MD5 = sb.toString();
	 
	    } catch (NoSuchAlgorithmException e) {
	        e.printStackTrace();
	        MD5 = null;
	    }
	    return MD5;
	}
}
package com.common.security; 

import java.security.MessageDigest;

public class SHA256 {
    public static String encSHA256(String pwd) { 
	try{ 
            MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
	    byte[] hash = digest.digest(pwd.getBytes("UTF-8")); 
	    StringBuffer hexString = new StringBuffer(); 
	    for (int i = 0; i < hash.length; i++) { 
                String hex = Integer.toHexString(0xff & hash[i]); 
        	if(hex.length() == 1) hexString.append('0'); 
       	        hexString.append(hex); 
	    }
	    return hexString.toString(); 
        } catch(Exception ex){ 
            throw new RuntimeException(ex); 
	} 
    } 
}
String pwd = "1111";
// MD5 암호화
String encMd5 = MD5.encMD5(pwd);
// MD5 암호화 결과
System.out.println("MD5 REQUEST : " + pwd);
System.out.println("MD5 : " + encMd5);
// SHA256 암호화
String encSHA256 = SHA256.encSHA256(encMd5);
// SHA256 암호화 결과
System.out.println("SHA256 REQUEST: " + pwd);
System.out.println("SHA256 : " + encSHA256);

사용자가 패스워드를 입력하면 입력한 값을 위의 로직을 거쳐서 암호화를 한 후

암호화 되어 값이 저장되어 있는 필드값과 비교한 후 로그인 처리를 한다.