본문 바로가기
Study/Java

JAVA - MD5, SHA256 암호화 하기 (해쉬 코드 얻기)

by 오늘만 사는 여자 2022. 7. 12.
728x90
반응형

MessageDigset Class 

java.security.MessageDigest 클래스를 사용하며, 해시 알고리즘에는 MD5, SHA-1, SHA-256 등이 있습니다.

MessageDigest.getInstance(String algorithm) 메소드의 인수에 알고리즘 이름을 지정함으로써 해당 알고리즘에서 해시값을 계산하는 MessageDigest를 구할 수 있습니다.

 

 

MD5 (Massage -Diget algorthm 5)

MD5는 메시지 축약 알고리즘으로써, 파일 무결성 검사 용도로도 많이 쓰이고 있습니다

128bit의 해쉬를 제공하며, 암호화와 복호화를 통하여 보안용 도로도 많이 쓰이고 있습니다.

하지만 암호화 결함이 발견되어 보안 용도로 사용할 때에는 SHA와 같은 다른 알고리즘을 사용하는 것이 권장되고 있다고 합니다.

 

 

MD5 코드

package org.test.controller.utill;

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

public class md5 {
	public static String testMD5(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;
	}
}

 

 

 

 

 


SHA (Secure Hash Standard) 

SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음입니다.

여러 종류가 존재하며 그중 SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있습니다.

SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 했으며, 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장합니다.

 

 

SHA-256 코드

package org.test.controller.utill;

import java.security.MessageDigest;

public class sha256 {
	public static String testSHA256(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);
		}
	}
}

 


MD5, SHA-256 실행코드 및 결과

@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home() {
    
		/* 암호화할 텍스트 */
		String text = "Hello, Java";
		
		/* MD5 암호화  */
		String encrypt = md5.testMD5(text);
		
		/* MD5 암호화 결과  */
		System.out.println("MD5 암호화 요청 텍스트 : " + text);
		System.out.println("MD5 암호화 완료 텍스트 : " + encrypt);
		
		
		/* SHA256 암호화 */
		String encryptSHA256 = sha256.testSHA256(text);
		
		/* SHA256 암호화 결과 */
		System.out.println("SHA256 암호화 요청 텍스트 : " + text);
		System.out.println("SHA256 암호화 완료 텍스트 : " + encryptSHA256);
		
		return "home";
	}

 

 

출처 : https://kshman94.tistory.com/84

728x90
반응형

댓글